プログラムに非常に単純なファイルシステムがあります。
worker.hを含む:main.cpp、worker.hを含むworker.cpp、worker.hを含むworker.cppがあります。
worker.h にはヘッダー ガードがあり、main.cpp と worker.cpp の両方で必要ないくつかの変数が宣言されており、いくつかの関数宣言があります。
#ifndef __WORKER_H_INCLUDED__
#define __WORKER_H_INCLUDED__
bool x;
int y;
void somefunction( int w, int e );
#endif
他のスレッドと Google の結果を調べたところ、ヘッダー ガードは、複数のソース ファイルからではなく、単一のソース ファイル内の複数のインクルードからユーザーを保護することがわかりました。
したがって、リンカー エラーが発生する可能性があります。
私の質問は
関数ではなく変数だけに複数の定義エラーがあるのはなぜですか? 私の理解によると、これらは両方とも宣言されているだけで、ヘッダー ファイル worker.h で定義されていません。
複数定義リンカー エラーなしで、変数を main.cpp と worker.cpp の両方で使用できるようにするにはどうすればよいですか?