预编译的三种情况

           在C++中存在三种预编译的行为,1.宏展开    2.#include包含   3.条件限定#if  #endif预判断 。  下面我们来逐一的分析这三种情况的用途。

1.宏定义的格式为  #define PI  3.1415   //这就是一个宏定义。

它的优点:在程序的任何位置凡是应用到3.1415的地方都可以用PI来代替。如果以后需求改变了,不采用 3.1415值时,可以很方便的修改宏的定义即可。而不需要到处去找程序中3.1415的值修改。极大的提高了可维护性。正是因为这个原因,MFC框架中采用大量的宏定义。

2.#include预包含处理指令,这里存在二种形式的定义  1.#include  <xx.h>   2.  #include  "xx.h" 。

1.#include  <xx.h>     用尖括号包含的头文件,系统会直接在相应的标准程序库中查找

2.#inclde    "xx.h"       用引号包含的头文件,系统会优先在当前目录(也就是你自己定义的头文件所有的工程目录下)查找,找不到才会在标准库中查找。

应用的场合:把相应头文件中代码合并到当前包含文件中形成一个完整的代码文件。

3.条件限定即根据相应的条件来预编译指定的代码段,如果条件成立则加入到编译代码中,不成立则直接忽略。存在有二种形式的条件限定

1.#if   #else  #elif # endif  形式的条件判断

代码示例:

#include <iostream>
using namespace std;

#define flag  1//定义宏作为标识
#define flag1 0

int main(){
#if flag      //flag为1, 则执行下面代码
cout<<"in flag"<<endl;
#elif flag1   //常量表达式
cout<<"in flag1 "<<endl;
#else
cout<<"last else"<<endl;
#endif        //条件限定结束符
}

2.#ifdef   #ifndef   #else   #endif     形式条件判断

代码示例:

#include <iostream>
using namespace std;

#define debug

int main(){

#ifndef debug   //如果没有定义宏debug,执行下面语句
cout<<"in first code"<<endl;
#else           //否则执行下面语句
cout<<"in second code"<<endl;
#endif          //条件限定结束符
}

应用的场合:适用于程序调试。做为一个开关,非常方便的开启所有调用语句,或关闭所有调用语句。当设定的标识符为false时则关闭调用语句,否则打开。做为预处理程序处理的对象,相应的如果关闭调试语句,那么这些调试语句就会被预处理程序所忽略,而不会编译到产品程序中。如果产品中出现了错误,那么可以方便的打开所有调试语句进行分析,这也是条件限定诱人之处

个人技术网站


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值