C++ 链接外部变量c+时出错+;

C++ 链接外部变量c+时出错+;,c++,linker,extern,unresolved-external,C++,Linker,Extern,Unresolved External,我有一个包含头文件的main.cpp程序。 函数的实现在其他cpp文件中。您是否声明了main中变量的实际存储? 在下面的示例中,外部变量用common.h声明。 但是这个变量的实际存储在main.cpp中 ==> common.h <== extern int var1, var2, var3, var4; ==> main.cpp <== #include <iostream.h> #include "common.h" #include "other.

我有一个包含头文件的
main.cpp
程序。
函数的实现在其他
cpp
文件中。

您是否声明了main中变量的实际存储? 在下面的示例中,外部变量用common.h声明。 但是这个变量的实际存储在main.cpp中

==> common.h <==
extern int var1, var2, var3, var4;

==> main.cpp <==
#include <iostream.h>
#include "common.h"
#include "other.h"

int var1, var2, var3, var4 = 4; /* the actual storage */
int main(int argc, char **argv)
{
    std::cout << sumVars() << endl;
}

==> other.h <==
int sumVars();

==> other.cpp <==
#include "common.h"

int sumVars() {
    return var1 + var2 + var3 + var4;
}

==>common.h main.cpp请花些时间阅读,尤其是名为和的部分。更重要的是,请阅读。您可能还想了解a是什么。变量是在
main()
函数中声明的还是在它之前声明的?它应该在之前,使它们。此外,您在头文件中写入了
extern[var-type][var-name]
,或者在头文件中写入了
[var-type][var-name]
?变量在main中声明@FinlayLifny您能给我们展示一下cpp和头文件的代码吗?它与我的代码类似,但我在main()中声明了这些变量;我如何在另一个cpp文件中声明的另一个函数中使用它们,而不需要像您那样将这些变量设置为全局变量?lifny如果在main中声明它们,则它们是局部变量(在堆栈上),即使在同一源文件中也不能被其他函数直接使用,并且不能具有外部链接。