1. #define PI 3.1415 这是一个很常见的宏定义
不过,在c++中,effective c++中曾指出过,尽量用const 定义常量,来替换宏定义。
const double PI = 3.1415;
好处: const 替换 宏定义后,编译时能进行类型检查,一旦出错后,比宏定义更方便调试。
2. 我们来思考一个问题,如果多个文件需要使用 常量PI,则在每个文件中都如下定义,const double PI = 3.1415;此时,你是否会想,存在变量冲定义的问题吗?
其实,const定义的变量,只在定义所在文件有效,所以,多个文件同时定义 const double PI = 3.1415; 相当于不同的变量,不会造成变量重定义。
3. 我们再思考一个问题,如果有如下语句 const int Num = fx(); 其中fx()返回一个int,我们需要在多个文件共享变量Num,此时,需如何处理?
其实很简单,只在一个文件中定义Num,如下 extern const int Num = fx(); 注意,此时extern关键字,必须要加,其余需要使用Num的文件中,只需声明即可, extern const int Num;
4. 最后,在思考一个问题,正常情况下非const变量,如果想在多个文件中共享,如何处理?
与3的情况比,略微有些不一样,如果需在多个文件共享,则需要声明为extern,很简单,定义只在一个文件,int Cnt = 25; 其余需要使用该变量Cnt的文件中,声明为外部变量即可,如下 extern int Cnt;