Advertisement

C++学习中的#define 替换

阅读量:

此次的替换显著减少了预处理的需求量;然而,并未完全消失的是#define这一关键要素;同时,#ifdef和ifndef在编译逻辑中依然发挥着不可替代的作用。

复制代码
    #define ASPECT_RADIO 1.512

该处采用了宏定义机制,在代码编写过程中将ASPECT_RADIO这一变量通过预处理器进行了替换操作。其中ASPECT_RADIO被预处理器替换为数值1.512。需要注意的是,在编译器执行代码处理时,默认情况下所有的ASPECT_RADIO已经被转换为具体的数值1.512了。当程序运行出现错误时,在错误信息中不会显示ASPECT_RADIO这一变量的存在,默认情况下也不会显示它的具体值为1.512。这也给调试和定位错误带来了不便。

通常我们采用const、enum以及inline这些关键字来取代#define。下面具体阐述各个替换的情况。(实际上,在某些特定情况下#define仍然发挥着作用,在本节所讨论的情境下采用其他关键字更为合适)

用const替代

常量声明符由编译器直接解析并执行操作,在实际编程中可以通过以下方式实现;而#define则仅在预处理阶段进行字符串替换。

复制代码
    const double ASPECT_RADIO = 1.512;

对于一般的情况直接这样替换就行,但是有

全部评论 (0)

还没有任何评论哟~