我试图理解C ++中的关键字extern,并编写了一个简短的代码来概述其含义。不幸的是我做错了什么
bla.h
int bla = 4;
TEST.CPP
#include <iostream>
using namespace std;
int main() {
extern int bla;
cout << bla << endl;
}
g++ -o test bla.h test.cpp
/tmp/ccED67jz.o: In function `main':
test.cpp:(.text+0xa): undefined reference to `bla'
collect2: ld returned 1 exit status
答案 0 :(得分:4)
extern
,您描述的用法仅适用于全局变量:
bla.cpp
int bla = 4;
TEST.CPP
#include <iostream>
extern int bla; // use the global from bla.cpp as a global in this file
int main(int argc, char *argv[]) {
std::cout << bla << "\n";
return 0;
}
答案 1 :(得分:1)
更像这样使用它。
TEST.CPP
extern int bla;
int main(int argc, char** argv)
{
cout << bla << endl;
return 0;
}
other.cpp
int bla;
g ++ test.cpp other.cpp
基本上,extern用于使编译器将外部变量链接到另一个目标文件中。那可能是另一个源文件,甚至是外部库。它也只适用于全局变量。
答案 2 :(得分:1)
extern的意思是:不要在这里创建变量,它已经存在于其他地方。 “其他”部分表示不同的编译单元。
例如:
file1.c中
int x;
file2.c中
extern int x; /* x already exists in file1.c */
int main()
{
x = 10;
}
像这样编译:
gcc file1.c file2.c