很好奇宏定义可否嵌套使用
经试验 可以分下面两种情况
#include<stdio.h>
//#define ls(p) (p << 1)
#define lls(p) (ls(ls(p)) << 1)
#define ls(p) (p << 1)
int main() {
printf("%d ", lls(1));
return 0;
}
#include<stdio.h>
#include<iostream>
#define ls(p) (p << 1)
#define lls(p) (ls(ls(p)) << 1)
//#define ls(p) (p << 1)
int main() {
printf("%d ", lls(1));
return 0;
}
在 VS2019 里面 第二种会语法高亮,第一种不会。
但输出结果都为 8, 也就是说都可以使用。
我一直以为宏定义是在编译的时候作代码替换,本以为是不可嵌套的。很神奇,现在好忙,以后研究一下。