分类: C/C++
2014-10-10 20:06:17
条件编译行为类似c中的if…else,条件编译是预编译指示命令,用于控制是否编译某段代码。
#include的本质是将已经存在的文件内容嵌入到当前文件中#include的间接包含同样会产生嵌入式文件内容的动作。如何随心所欲的包含头文件?——避免重复包含同一个头文件。
加上#ifndef _TEST_H_
#define _TEST_H_
......
#endif
当包含文件中test.h重复包含编译就不会有问题。
#if…#else…#endif被预编译器处理;而if…else语句被编译器处理,必然被编译进目标代码;条件编译在实际工程用于以下2种情况:不同的产品共用一份代码,区分编译产品的调试版和发布版。
#include
#ifdef DEBUG
#define LOG(s) printf("[%s:%d] %s\n", __FILE__, __LINE__, s)
#else
#define LOG(s) NULL
#endif
#ifdef HIGH
void f()
{
printf("This is the high level product!\n");
}
#else
void f()
{
}
#endif
int main()
{
LOG("Enter main() ...");
f();
printf("1. Query Information.\n");
printf("2. Record Information.\n");
printf("3. Delete Information.\n");
#ifdef HIGH
printf("4. High Level Query.\n");
printf("5. Mannul Service.\n");
printf("6. Exit.\n");
#else
printf("4. Exit.\n");
#endif
LOG("Exit main() ...");
return 0;
}