45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:多次包含一个含有实现的头文件的方法

多次包含一个含有实现的头文件的方法

2016-09-05 17:07:49 来源:www.45fan.com 【

多次包含一个含有实现的头文件的方法

今天遇到一个变态的需求:

假设有如下几个文件

a.h,b.cpp,c.cpp,其内容分别为

//a.h的内容

void f();

void f(){}

//b.cpp的内容

#include "a.h"

void call()

{

f();

}

//c.cpp的内容

#include "a.h"

#include "b.h"

int main(int argc, char* argv)

{

f();

}

编译上面三个文件,会出错,因为 函数f的实现被包含了多次,由于设计要求f的声明和实现必须放在同一个头文件中,而这个头文件有可能被多个其他的文件包含,如何解决这个冲突。

经网友flw指点,可以把声明和实现分别包在两个宏中,然后在一个实现文件中定义实现宏即可。

最终的解决办法如下:

//a.h的内容

#ifndef AHEAD

#define AHEAD

void f();

#endif

#ifdef ABODY

void f(){}

#endif

//b.cpp的内容

#define ABODY

#include "a.h"

void call()

{

f();

}

c.cpp的内容不变。

这确实是一个很巧妙的方案,呵呵

 

本文地址:http://www.45fan.com/a/question/72800.html
Tags: 一个 包含 多次
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部