嵌入式C语言学习笔记(1)-- 预处理的使用

一、宏定义

宏可以理解为替换,替换过程不会进行语法检查,语法检查在编译时进行。
1.不带参数的宏定义:
宏定义又称为宏代换、宏替换,简称“宏”。实质为直接替换,宏名一般为大写。
例:

#defined PI 3.1415

2.带参数的宏:
#define 宏名(参数表) 文本
例如:#define S(a,b) a*b

需要注意的是:如果宏替换运算式或者函数一般要加上()
错误使用如:

#defined test 5+3
printf("5倍test = %d", test * 5); 

实则计算的是:5+3*5

3.条件编译
#ifdef
#else
#endif
顾名思义,更急条件判断是否编译,一般方便调试预处理。
4.预定义宏
一般为系统定义宏,用户一般不自己定义,由两根下划线和名字首尾组合,前后都是两根下划线。
如:

__FONCTION__ //函数名
__LINE__           //行号

使用例子
运行结果
在这里插入图片描述

二、包含类预处理

形如 #include后接头文件,实质是把头文件的内容展开编译。

三、#的其他使用

“#“ 字符串化
”##“ 连接符

例:

#include <stdio.h>

#define ABC(x) #x       // #字符串化 “x”
#define DAY(x) day##x  //##连接符号

int main()
{
 int day1 = 10;
 int day2 = 20;
 printf(ABC(ab\n) );
 /*
   printf("the day is %d\n", day1 );  输出10 
 */
 printf("the day is %d\n",DAY(1) );   
 return 0;
}

在这里插入图片描述

四、GCC预处理命令

gcc -E hello.c -o hello.i

编译成.i,把需要预处理的代码替换过来。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值