请原谅我,如果我做了一件非常愚蠢的事,但我有3个档案:
main.cpp中:
#include "a.h"
int main()
{
return 0;
}
a.cpp:
#include "a.h"
//x = 0;
A.H:
#ifndef A_H
#define A_H
int x;
#endif // A_H
但它没有编译。我认为x
被定义了两次。我究竟做错了什么?如何解决?
答案 0 :(得分:5)
x
在两个转换单元中定义(因为定义标头包含在两个cpp文件中)。只定义一次:
main.cpp中:
#include "a.h"
int main()
{
return 0;
}
a.cpp:
#include "a.h"
int x = 0;
A.H:
#ifndef A_H
#define A_H
extern int x;
#endif // A_H
答案 1 :(得分:1)
您需要在a.cpp中声明int x
,在a.h中声明extern int x
。