b.c
编译失败,b.cpp
可以编译。我不太明白C和C++之间extern的区别。任何人都可以帮助解释为什么 b.c
不起作用但 b.cpp
可以吗?谢谢。
$ cat b.c
extern int b;
int a = b;
$ gcc -g -Wall -pedantic -c -o b.o b.c
b.c:4:9: error: initializer element is not a compile-time constant
int a = b;
^
1 error generated.
$ cat b.cpp
extern int b;
int a = b;
$ g++ -g -Wall -pedantic -c -o b.o b.cpp
$ ls -g b.o
-rw-r--r-- 1 staff 2640 Jan 5 10:22 b.o
最佳答案
C 和 C++ 中的 extern
变量之间没有显着差异。不同之处在于有效初始化程序的规则。在 C 中,具有静态存储持续时间的变量的初始值设定项 must be a compile time constant .在 C++ 中,它几乎可以是任何表达式(包括复杂的函数调用)。
关于c++ - C 和 C++ 中的外部变量有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54053892/