编译预处理

编译预处理的作用:

对源程序编译之前做一些处理,生成扩展C源程序。

种类 宏定义          

#define     文件包含      

#include 条件编译      

#if--#else--#endif等

其他宏定义   #line   #error    #pragma

一、宏定义

无参的宏定义的

例: #define        NUM        1

1、宏展开只做简单的替换,不做语法检查和运算;

2、为了运算结果没有歧义,建议宏体加上括号;

3、不带参宏定义的语法:#define         宏名        【宏体】

4、宏名建议大写,与变量区分;

5、宏体可以省略,表示该宏已经定义;

有参宏定义

例:#define        S(a,b)        a*b

宏展开:S(3,2)==3*2;

例#define        S(a,b)        a+b

S(3,2)*S(1,2)=3+2*1+2=7;

1、参数表和宏名之间不能有空格;

2、参数表不需要类型,只需要参数;

3、为了计算没有歧义,宏体中的所有参数以及整个宏体都要使用括号括起来。

二、条件编译

条件编译有3种形式

1、第一种形式:

(1)、第一种结构

#if        常量表达式

语句块

#endif

(2)、第二种结构

#if        常量表达式

语句块1

#else

语句块2

#endif

(3)、第三种结构

#if        常量表达式1

语句块1

#elif        常量表达式2

语句块2

#elif        常量表达式3

语句块3

.....

#else

语句块n

#endif

2、第二种形式

(1)第一种结构

#ifdef        标识符

语句块

#endif

只要define定义了,#ifdef才会执行语句块。

(2)第二种结构

#ifdef        标识符

语句块1

#else

语句块2

#endif

3、第三种形式

(1)第一种结构

#ifndef        标识符

语句块

#endif

如果标识符没有定义则执行语句块。

(2)第二种结构

#ifndef        标识符

语句块1

#else

语句块2

#endif

如果标识符已经定义,则走语句块2。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值