如何链接main.cpp,a.h和a.cpp?

时间:2014-12-29 13:24:46

标签: c++

请原谅我,如果我做了一件非常愚蠢的事,但我有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被定义了两次。我究竟做错了什么?如何解决?

2 个答案:

答案 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