在CSAPP看到#ifdef,对条件编译的命令不是很熟悉,
#if defined(symbol1)
#ifdef symbol1
这两条命令是类似的,不过#if的命令更强大一点,symbol1的表达式可以更加灵活。
#include <stdio.h> #define LETTER 0 int main(){ char str[20] = "c language", c; int i = 0; while((c = str[i]) != '\0'){ i++; #if LETTER if(c >= 'a' && c <= 'z') c = c-32; #else if(c >= 'A' && c <= 'Z') c = c+32; #endif printf("%c",c); } return 0; }
如果 LETTER 定义为1,则输出 C LANGUAGE
如果 LETTER定义为0, 则输出 c language
参考资料:http://blog.chinaunix.net/u/21790/showart_210476.html