C 和 C++ 中全局 const
变量的作用域相同,都是当前文件,不同的是它们的可见范围:
C 语言中 const
全局变量的可见范围是整个程序,在其他文件中使用extern
声明后就可以使用;而 C++ 中 const
全局变量的可见范围仅限于当前文件,在其他文件中不可见,所以它可以定义在头文件中,多次引入后也不会出错
如果你使用的是 GCC,那么可以通过添加extern
关键字来增大 C++ 全局 const 变量的可见范围,如下所示:
extern const int n = 10;
这样n
的可见范围就变成了整个程序,在其他文件中使用 extern
声明后就可以使用了。不过这种方式只适用于 GCC,不适用于 VS/VC。
很多 C++ 教程在对比 const
和 #define
的优缺点时提到,#define
定义的常量仅仅是字符串的替换,不会进行类型检查,而 const
定义的常量是有类型的,编译器会进行类型检查,相对来说比 #define
更安全,所以鼓励大家使用 const
代替 #define
。
网友评论