链接外部变量 c++ 时出错 [duplicate]

Error in linking external variable c++ [duplicate]

提问人:Finlay Lifny 提问时间:2/12/2014 最后编辑:Finlay Lifny 更新时间:2/17/2014 访问量:1101

问:

我有包含头文件的程序。 函数的实现位于其他文件中。main.cppcpp

C++ 链接器 解析外部

评论

2赞 Some programmer dude 2/12/2014
请花一些时间阅读帮助页面,尤其是名为“我可以在这里问哪些主题?”和“我应该避免问什么类型的问题?”的部分。更重要的是,请阅读 Stack Overflow 问题清单。您可能还想了解什么是 SSCCE
1赞 Proxy 2/12/2014
变量是在函数中还是在函数之前声明?它应该在之前,使它们成为全局变量main()
0赞 Proxy 2/12/2014
另外,你在头文件中写了还是在头文件中写了?extern [var-type] [var-name][var-type] [var-name]
0赞 Finlay Lifny 2/12/2014
变量在 main!!
0赞 John Odom 2/12/2014
@FinlayLifny 您能向我们展示一下 cpp 和头文件的代码吗?

答:

0赞 Sanjaya R 2/12/2014 #1

您是否在 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;
}

评论

0赞 Finlay Lifny 2/13/2014
它类似于我的代码,但我在 main() 中声明了这些变量;如何在另一个 CPP 文件中声明的另一个函数中使用它们,而无需像您那样使这些变量成为全局变量?利夫尼
0赞 Sanjaya R 2/13/2014
如果你在 main 中声明了它们,那么它们就是局部变量(在堆栈上),即使在同一个源文件中也不能被其他函数直接使用,也不能有外部链接。