如何防止简单的宏替换?
例如
#define number 0x10
int number = 0x5;
Run Code Online (Sandbox Code Playgroud)
我知道这可以通过用括号将宏括起来(因此,将它与用于 args 的相邻括号分开)来为函数样式的宏完成,例如minand max:
#define max(...)
void (max)();
Run Code Online (Sandbox Code Playgroud)
我目前的方法是推送宏值,取消定义,使用它,然后弹出原始值。
您无法阻止宏替换。
这就是为什么宏通常都是大写的原因之一:
#define NUMBER 0x10
int number = 0x5; // no problem here.
Run Code Online (Sandbox Code Playgroud)
甚至这当然可以做到:
int number = NUMBER; // even this can be done of course
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |