Chinaunix首页 | 论坛 | 博客
  • 博客访问: 202506
  • 博文数量: 80
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 824
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-12 21:40
个人简介

只有今天的埋头,才有明天的出头。

文章分类

全部博文(80)

文章存档

2014年(80)

我的朋友

分类: 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;

}

 

阅读(945) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~