dar*_*rda 21
在它们前面带#的语句称为预处理程序指令.在实际编译代码之前,它们由解析器处理.从第一次使用Google搜索(http://www.cplusplus.com/doc/tutorial/preprocessor/):
预处理程序指令是程序代码中包含的行,它们不是程序语句,而是预处理程序的指令.这些行总是以井号(#)开头.预处理程序在实际编译代码开始之前执行,因此预处理程序在语句生成任何代码之前摘要所有这些指令.
所以#if将在编译时决定,如果在运行时决定"正常".换一种说法,
#define TEST 1
#if TEST
printf("%d", TEST);
#endif
Run Code Online (Sandbox Code Playgroud)
将编译为
printf("%d", 1);
Run Code Online (Sandbox Code Playgroud)
如果相反你写了
#define TEST 1
if(TEST)
printf("%d", TEST);
Run Code Online (Sandbox Code Playgroud)
该程序实际上将编译为
if(1)
printf("%d", 1);
Run Code Online (Sandbox Code Playgroud)
预处理器if允许您在将代码发送到编译器之前对其进行调节.通常用于阻止标题代码被添加两次.
编辑,你的意思是C++,因为它被标记为这样? http://www.learncpp.com/cpp-tutorial/110-a-first-look-at-the-preprocessor/