第一种:
#define test_no1
#ifdef test_no1
printf("test_no1被定义的话,就打出这行字");
#else
printf("else 可以省略");
#endif
上面这种的用法是,如果标识符被定义了,那么就编译第一段,否则就编译第二段。
第二种:
#ifndef test_no2
printf("如果没有定义上面的标识符,打出这行字");
#else
printf("else可以省略");
#endif
上面这种用法就是翻过来的,如果标识符没有被定义就编译第一句,否者就编译第二句。
第三种:
#if test_no3
printf("~~~~~~~~~");
#else
printf("~~~~~~~~~");
#endif
上面这种用法的意思就是如果test_no3为真,就编译第一句,否者编译第二段。
第四种:
#ifdef 和 #if defined 的区别
#if defined (test_no4) && defined (test_no5)
printf("~~~~~~~~~~~~~~~~")
#endif
#if defined (test_no6) || test_no7> 12
printf("~~~~~~~~~~~~~~~~")
#endif
第四种可以组成复杂的预编译条件,从而实现功能的扩展
问这么做有什么好处吗?
答:当然,在大型代码开发的时候可以利用这一功能控制代码是否被编译来控制项目的功能以及代码的大小。或者在调试的时候可以屏蔽某处代码,来排查问题,而不至于翻过去整段注释掉(这样做真的很low)。