1

私が収集したものから、c++ の「extern」キーワードを使用して、変数が別の .cpp ファイルで定義されていることをコンパイラに伝えることができます。この定義を明示的にする必要があるのか​​、それとも変数が定義されている .cpp ファイル内の関数によって副作用によって定義を変更できるのか疑問に思っていました。

すなわち

//a.h
extern int foo;

//a.cpp
#include <a.h>

int foo=0;
int func(int &foo) // EDIT: oops, forgot the type for the parameter and return statement
{
foo = 10;
return 5;
}
int x = func(foo); // EDIT: changed to match declaration and assigned function to dummy variable

//b.cpp
#include <a.h>

int main()
{
cout << foo;
return 0;
}

プログラムは foo が 10 であることを認識できますか、それとも 0 になりますか? また、コンパイラが foo を 0 と認識した場合、それを 10 と認識するようにする方法はありますか? また、これを自分でコンパイルしてテストできない理由は、複数のファイルがある場合にコンパイルする方法がわからないためです。私は新しいです =)。

編集: エラー ポインターをありがとう、しかし、主な問題は、b.cpp が foo が 10 か 0 かを確認できるかどうかです。乾杯!

4

2 に答える 2