愚蠢的C ++将GCC中的麻烦联系起来

时间:2013-07-12 10:00:48

标签: c++ gcc linker pragma

抱歉非特定问题标题。总之,这就是我所拥有的:

file1.cpp

#include "file1.h"

int main()
{
    somefunc();
}

file1.h

#pragma once
#include "file2.h"

int somevar;

file2.cpp

#include "file2.h"

void somefunc()
{}

file2.h

#pragma once
#include "file1.h"

void somefunc();

这可以很好地与GCC编译,但在链接期间会给我“multiple definition of somevar”。

有什么问题?

1 个答案:

答案 0 :(得分:2)

您通过将包含其定义的头文件包含在多个.cpp文件中,在多个文件中定义somevar。在标头中将其声明为extern int somevar;,并且只在一个.cpp文件中定义它。