從我收集的內容可以看出,C++中的'extern'關鍵字可用於告訴編譯器在另一個.cpp文件中定義了一個變量。我想知道這個定義是否必須是明確的,或者定義是否可以通過變量定義的.cpp文件中的函數的副作用來更改。在C++中使用extern關鍵字
即
//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;
}
程序可以識別富應該是10,還是會爲0?如果編譯器將foo識別爲0,是否有辦法使它可以識別爲10? 此外,我不能自己編譯和測試這個的原因是,我不知道如何編譯多個文件時,我是新=)。
編輯:謝謝你的錯誤指針,但我猜主要問題仍然是如果b.cpp可以看到foo是10還是0.乾杯!
你有一些奇怪的事情發生在兩個主要功能上。您只需要一個,並且該主函數可以從b.cpp調用函數,即使它位於a.cpp中。這就是#包含的內容。另外,你的func()不需要&foo參數來工作。我會到我的電腦並很快發佈答案。哦,並將它們編譯在一起取決於您的IDE /編譯器。你有什麼? – BrainSteel
@亞歷山大不,它不! @Roger'int func(&foo){...}中的'&foo'應該是什麼意思? – Praetorian
@Praetorian我的壞,是那些是不同的文件的獨立。 –