#include
//DSGFJSJH
//#define SS() 1
int main()
{
#if kfgkasfga
printf("==========\n");
#endif
#if !(SS)
printf("aaaaaaaaaa\n");
#endif
return 1;
}
上面这段程序,最终编译通过,没有警告(gcc -Wall),输出了aaaaaaaaaa
所以#if 到底把那些混乱的字符当作了什么?0?要是不小心写错了变量名,
编译又不报错,那不是悲剧了?
如果未定义的话,默认为FALSE
定义一个未初始化的变量,早起的编译器会自动赋一个初值,所以不会警告报错