示例1:
文件test.cpp
const int age = 30;
文件 main.cpp
#include <QCoreApplication>
extern const int age;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
printf("age = %d\n", age);
return a.exec();
}
程序编译报错 , 如图:
原因:
C++中被const修饰的全局变量默认只在文件内可见, 所以上述test.cpp中const全局变量要在外部文件中被使用到, 必须添加extern声明, 即: extern const int age = 30;
- 对于非const的全局变量, 其默认在外部文件可见, 其前面添加extern 和不添加 extern都是一样的, 也可以这样认为默认为"extern", 而const全局变量默认是没有"extern", 要想在外部文件访问, 必须要显式的添加)
- 对于非const全局变量如果不想被外部文件访问, 那么在其前面添加static, 即可.
- 对于const全局变量, 如果前面不显式声明extern, 其默认就是不可被外部文件访问, 及: const 和 static const效果一样.