Devc++怎么把工程里的c全只include一个自己头文件? 50

我想把所有其他头放到自己的头文件里,然后其他.c全部include那一个头,不知道怎么操作啊?我选择了连接时包含就说重定义,可是我已经ifndef保护了啊?如果不连接时包... 我想把所有其他头放到自己的头文件里,然后其他.c全部include那一个头,不知道怎么操作啊?我选择了连接时包含就说重定义,可是我已经ifndef保护了啊?如果不连接时包含就说函数未定义。 展开
 我来答
帐号已注销
2020-04-14 · TA获得超过318个赞
知道小有建树答主
回答量:345
采纳率:90%
帮助的人:88万
展开全部
看描述,你把函数实现写到头文件中了。
只有inline函数才能写到头文件中。如果是非inline函数,你包含一次,就相当于实现一次,连接时,就会找到同一个函数的多个实现——连接器就不知道该选谁。
打个比方:
假设在a.h中写:
void foo(void) { return; }
即便使用了#ifndef指令,但是在b.c和d.c中分别包含a.h,函数foo的实现即“void foo(void) { return; }void foo(void) { return; }”仍然会各在b.c和d.c中出现一次,因为都是第一次包含。这样得话,函数foo就相当于实现了两次,从而让连接器无法处理。
更多追问追答
追问
我在头文件里只写了函数声明,函数实现是写在那些.c里的
为什么还是会重定义?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式