Linux中C语言的预处理

5 篇文章 0 订阅

**C在Linux中的执行过程
.c→.s→.o→.out
预处理 编译 汇编 链接**


预处理阶段

hello.c→hello.i

gcc -o hello.i hello.c -E

进行宏替换(宏的本质是发生在预处理阶段单纯的字符串替换)

#define R 10

预处理时只是将.c文件中的R替换为字符串“10”。

1)宏函数

#define R 20
# define N(n) n*10
//在main函数中
int b=N(R);
//b=200
#define ADD(a,b) a+b

int c=ADD(a,b);
//宏函数可以求出a+b的值;

注意:

#define ADD(a,b) a+b

int e=ADD(a,b)*ADD(a,b);//在预处理阶段ADD(a,b)被替换为字符串a+b

#define ADD(a,b) (a+b) //这样的宏定义才能计算出正确答案

使用宏定义函数时对参数类型不作要求
a,b可以为int,也可以为float,这是比定义一个普通函数的一个优势。

类似的typedef int zhengxing;//在预处理阶段不会被替换

2)条件编译

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值