C语言中的#if和#ifdef,相同情况下如果分别使用两者的差异。
#if后面理应是判断句,根据判断结果进行执行。
#ifdef 的作用相当于 #if defined().
但是在读code时发现如下使用。
#if (FUN_CON1)
fun1();
#else (FUN_CON2)
fun2();.
....
#endif
其中FUN_CON1,FUN_CON2等等未知,不存在于code中,可能存在于makefile中,或者其他从底层获取的值。
那么这里的#if是否可以直接替换成#ifdef呢?如果不替换,又有什么区别呢?
举个简单的例子,
1.如果
#define FUN_CON1
则#if编译报错,#ifdef编译成功且执行fun1;
2.如果
#define FUN_CON1 "aaa"
结果同1。
3.如果
#define FUN_CON1 0
#define FUN_CON2 1
则#if下执行fun2,#ifdef下执行fun1.
那么,显而易见了。两方面,语法上的区别和判定方式上的区别。