中易网

C++重定义问题

答案:2  悬赏:70  
解决时间 2021-01-12 10:47
  • 提问者网友:不要迷恋哥
  • 2021-01-12 06:40
C++重定义问题
最佳答案
  • 二级知识专家网友:酒安江南
  • 2021-01-12 07:21
1 有了 #pragma once 就不需要下面的
#ifndef FAA_H
#define FAA_H
....
#endif
这种头文件保护符了,2者作用重复。

2 变量重定义是因为你 把变量定义在了头文件里面了,每个包含test.h的.cpp里面都有一个 int a;自然链接的时候就重复了。

3 解决方式:
3.1 变int a;为 const int a;
3.2 变 int a;为 extern int a; 并且随便在某一个(只能有一个).cpp里面写int a;

4 预处理指令能解决的是一个编译单元(可以理解为一个cpp)里的问题,而你的重定义是跨了2个编译单元,预处理指令不可能解决的。参考资料:自己经验,实力
全部回答
  • 1楼网友:轻雾山林
  • 2021-01-12 08:09
主要两个CPP生产了两个obj文件,同时遇到了两个int a!
可以使用关键字 int static a定义。
但是最好不要在.h文件里面定义变量!

参考资料:MSDN

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息