#include <stdio.h>
#include <stdlib.h>
int main(){
#if _WIN32
system("color 0c");
printf("windows");
#elif __linux__
printf("linux");
#else
printf("unknown");
#endif
return 0;
}
#if、#elif、#else 和 #endif 都是预处理命令,整段代码的意思是:如果宏 _WIN32 的值为真,就保留第 4、5 行 代码,删除第 7、9 行代码;如果宏 __linux__ 的值为真,就保留第 7 行代码;如果所有的宏都为假,就保留第 9 行代码。
这些操作都是在预处理阶段完成的,多余的代码以及所有的宏都不会参与编译,不仅保证了代码的正确性,还减小 了编译后文件的体积。
这种能够根据不同情况编译不同代码、产生不同目标文件的机制,称为条件编译。
条件编译是预处理程序的功能, 不是编译器的功能。
#if 的用法
#if 用法的一般格式为: