两个CPP包含同一个头文件重复定义,不过我在头文件中用了宏定义

Myson_is_zhanglin 2015-09-20 07:14:05
...全文
1231 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2015-09-20
  • 打赏
  • 举报
回复
外部变量声明放在头文件,并且加上 extern 存储声明符 外部变量,定义放在某个CPP中,C语言放在.c 中
Myson_is_zhanglin 2015-09-20
  • 打赏
  • 举报
回复
引用 2 楼 bluewanderer 的回复:
加保护只能避免同一个cpp内的重复包含一个头,两个cpp本来也要分别包含的。

如果想一个头给多个cpp用,那就不要在头里放实体的定义(比如你这里的全局变量)。你这种情况全局变量应该在头里声明(前面加extern),然后只在一个cpp里写定义(假设你真两个cpp都用的话)。
我把头文件的定义放到外面在create.cpp用extern但是有了新错误
Myson_is_zhanglin 2015-09-20
  • 打赏
  • 举报
回复
引用 1 楼 cjqpker 的回复:
你这里定义了一些全局变量,然后估计在其他的cpp中又定义了一次,导致重复定义。
解决办法是 在头文件的定义式之前,加上 extern,比如:
extern LinkList head;
这样,头文件中表明,此变量实在别处定义的,链接动作 就正常了。
在main函数调用create函数出错
bluewanderer 2015-09-20
  • 打赏
  • 举报
回复
加保护只能避免同一个cpp内的重复包含一个头,两个cpp本来也要分别包含的。 如果想一个头给多个cpp用,那就不要在头里放实体的定义(比如你这里的全局变量)。你这种情况全局变量应该在头里声明(前面加extern),然后只在一个cpp里写定义(假设你真两个cpp都用的话)。
假正经的班长 2015-09-20
  • 打赏
  • 举报
回复
你这里定义了一些全局变量,然后估计在其他的cpp中又定义了一次,导致重复定义。 解决办法是 在头文件的定义式之前,加上 extern,比如: extern LinkList head; 这样,头文件中表明,此变量实在别处定义的,链接动作 就正常了。

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧