宏定义,条件编译@TOC
支持1. 条件编译,内嵌宏定义可以;(参考如下代码段1)
支持2.条件编译,内嵌条件编译可以(参考如下代码段1)
参考代码段1:
#include <stdio.h>
#ifdef CC
#define MM
#else
#define CC
#endif
int main()
{
printf("Hello, World!\n");
int a=10,b =100,c;
{
#define BB
#ifdef BB
#ifdef CC
printf("Hello, World2!\n");
#endif
#endif
}
printf("%d\n",c);
printf("%d\n",c);
return 0;
}
运行结果
Hello, World!
Hello, World2!
32767
32767
不支持1:宏定义中含有宏定义;
#include <stdio.h>
#define AA \
{ \
#define BB \
}
int main()
{
printf("Hello, World!\n");
int a=10,b =100,c;
AA
printf("%d\n",c);
return 0;
}
运行结果:编译不过
不支持2:宏定义中含有条件编译;
#include <stdio.h>
#define AA \
{ \
#ifdef BB \
c= a-b; \
#else \
c= a+b; \
#endif \
}
int main()
{
printf("Hello, World!\n");
int a=10,b =100,c;
AA
printf("%d\n",c);
AA
printf("%d\n",c);
return 0;
}
运行结果:编译不过
结论:宏定义中不能含有带#的语句;条件编译无限制;
附加:宏定义如果有多行,每一个续行符号的后边不能有空格,切记!!!