我正在尝试了解“extern”的作用。我有一个简单的程序,在 main 的头文件中,用 extern 声明了一个变量。主要是定义该变量。然后 Main 调用另一个类文件中的方法(包含 main 的 header ,因此它应该可以访问外部变量),以便打印该变量的值。但是我得到一个编译器错误:“未解析的外部符号”int myglobal”。有人可以帮忙吗?谢谢!
如果我在 source.cpp 文件中删除对这个变量的引用,代码运行正常。
源代码.cpp
#include "main.h"
#include <iostream>
void printGlobal()
{
std::cout << "Global: " << myglobal;
}
来源.h
void printGlobal();
主要.h
extern int myglobal;
主要.cpp
#include "main.h"
#include "Source.h"
int main()
{
int myglobal = 5;
printGlobal();
system("pause");
return 0;
}
最佳答案
extern 仅适用于全局范围。如果我说 extern int myint;
这意味着某处有一个文件有 int myint;
在任何函数之外这是全局范围
还有通过 static int myint;
的文件范围,这意味着其他文件将无法通过 extern 访问它
将 main.cpp 更改为
#include "main.h"
#include "Source.h"
int myglobal = 5;
int main()
{
printGlobal();
system("pause");
return 0;
}
文件作用域
#include "main.h"
#include "Source.h"
static int myglobal = 5;
int main()
{
printGlobal();
system("pause");
return 0;
}
关于c++ - 用 extern 尝试一些简单的事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17636161/