c语言中预编译

预编译又被称为预处理,是做代码文本的替换工作。

处理#开头的指令。就是为编译做预备工作的准备。

常见的预编译指令有三种

(1)#include指令

    该指令指示编辑器将xxx.xxx文件的全部内容插入此处,如果使用< >代表在系统指定目录下搜索文件,使用”  ”代表现在当前目录下搜索文件,然后在系统默认目录下搜索。

(2)#define指令

    该指令有三种用法:

    第一种是定义标识,标识有效范围为整个程序,形如#define XXX,常与#if配合使用;

    第二种是定义常数,如#define max 100,则max代表100;

    第三种是定义”函数",如#define get_max(a, b) ((a)>(b)?(a):(b)) 则以后使用get_max(x,y)就可  以 

    得到x和y中较大的数(这种方法存在一些弊病,见注2)。

    第四种是定义"宏函数",如#define GEN_FUN(type) type max_##type(type a,type b){return     

    a>b?a:b;} ,使用时,用GEN_FUN(int),则此处预编译后就变成了 max_int(int a,int b){return    

    a>b?a:b;},以后就可以使用max_int(x,y)就可以得到x和y中较大的数.比第三种,增加了类型的说  

    明。        

  (3) #if、#else和#endif指令

    这些指令一般这样配合使用:

    #if defined(标识) //如果定义了标识

    要执行的指令

    #else

    要执行的指令

    #endif

     值得一提的是,在第三种预编译下#ifdef 和 #if defined 的区别在于,后者可以组成复杂的预编译     

     条件比如:

     #if defined (AAA) && defined (BBB)

          xxxxxxxxx

     #endif


     #if defined (AAA) || VERSION > 12

     xxxxxxxxx

     #endif

     而#ifdef 就不能用上面的用法,也就是说,当你要判断单个宏是否定义时

     #ifdef 和 #if defined 效果是一样的,但是当你要判断复杂的条件时,只能用 #if


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值