0

あいまいな質問タイトルで申し訳ありません。要するに、ここに私が持っているものがあります:

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リンク中に ' ' が表示されます。

なにが問題ですか?

4

1 に答える 1

2

somevarその定義を含むヘッダー ファイルを複数の .cpp ファイルに含めることにより、複数のファイルで定義しています。ヘッダーのように宣言しextern int somevar;、正確に 1 つの .cpp ファイルでのみ定義します。

于 2013-07-12T10:04:02.443 に答える