C++const全局变量与非const全局变量的重定义问题

如侯捷翻译的那本书中所说,简易C++用const变量代替宏定义#define,在一个头文件中定义全局变量,其他源文件引用,此时如果不是const变量则会提示重复定义,

及时你加上了防止重复包含的宏定义或者#pragma once,也无效。

C++ 不允许在全局下重复定义同一个标识符的变量(废话),而const为常量值,则保证了值得唯一性。所以采用const的全局变量在全局中不会出现重复定义的错误。

但是前提是你是在同一个头文件定义的,如果你在多个头文件中定义了相同标识符的const全局变量,同样会出现重复定义现象,因为不通的头文件之间不会互斥,即可以同时被包含在同一个源文件中。所以想要全局定义变量,最好定义成const常量且在同一个头文件中,从而取代#define宏的弊端(弊端这里就不废话了)。


谨以此记,如有异议纯属扯淡。

2015/11/06

你可能感兴趣的:(C++const全局变量与非const全局变量的重定义问题)