在Linux中,常常使用宏编译的方法来进行条件编译,通过宏的定义与否来选择执行对应的代码。
一般而言,使用的比较频繁的两种方法是
(1)、#if defined (XXX)
#endif
(2)、#ifdef
#endif
这两个都可以通过宏开关来控制程序的执行与否,但第一种更加灵活一些,其可以进行多个条件的判断。如下:
# include <stdio.h>
#define AAA
#define BBB
#define CCC
int main()
{
#if defined (AAA)
printf("AAA is defined\n");
#endif
#ifdef BBB
printf("BBB is define\n");
#endif
#if defined (AAA) &&defined(BBB)
printf("AAA and BBB are defined\n");
#endif
return 0;
}
程序的结果如下:
AAA is defined
BBB is define
AAA and BBB are defined
可知,如果条件比较复杂,#if defined 比#ifdef更适合(与之类似的是#if !defined)。
而#if一般要求参数为一定的数值,无法使用宏来判定。