文章目录
- 🍊自我介绍
- 🍊宏定义
- 🍊宏函数
- 🍊嵌入式开发常用do...while(0)
- 🍊字符串化运算符 ‘ # ’
- 🍊不定参数宏
你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~
🍊自我介绍
Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群一名“创始团队·嘉宾” ,现在我来为大家介绍一下有关嵌入式方面的内容。在进入介绍之前,可能有一些小伙伴不了解易编程·终身成长社群;想要进一步了解社群的小伙伴可以点击下方链接自行跳转至关于社群的介绍:
易编程·终身成长社群介绍 :
https://blog.csdn.net/weixin_74300052?spm=1011.2266.3001.5343
🍊宏定义
简介
格式:
#define 宏名 常量
功能:宏名代替常量,提高代码可读性
示例用法:
#define MAX 100
说明:
(1)表示MAX这个符号标识的值是100
(2)编译器会将宏替换成宏后面的内容
🍊宏函数
#define 宏函数名(参数1) 表达式
特点:宏都是原样替换
示例用法:
#include <stdio.h>
#define M 10
#define CALC(x) (x * x)
int main()
{
printf(""Result = %d\n",CALC(M + M));//120 (M + M * M + M) = 120
return 0;
}
🍊嵌入式开发常用do…while(0)
//do...while(0)好处:代码只执行一次,可以增加一些扩展使用
#include <stdio.h>
// \是换行
#define TEST() do{\print_demo_first;\print_demo_second();\}while(0)
pritn_demo_first()
{
printf("demo_first\n");
}
pritn_demo_second()
{
printf("demo_second\n");
}
pritn_demo_third()
{
printf("demo_third\n");
}
int main()
{
int n = 0;
printf("please input a data:");
scanf("%d",&n);
if(n % 2 == 0)
TEST(); //do{pritn_demo_first();pritn_demo_second()}while(0);
else
print_demo_third();
}
🍊字符串化运算符 ‘ # ’
#:我们常称为字符串化运算符,因为它会把宏调用时的实参转化为字符串
示例:
#define FUN(x) #x
int t = Fun(NUM)
printf("%d\n",t);
输出结果:
NUM
🍊不定参数宏
C99标准中规定允许用户定义有省略号的宏,省略号必须放在参数列表的后面,以表示可选参数。
你可以用可选参数来调用这类宏。在代码中用...代表。它们被保存在__VA_ARGS__中.
__VA_ARGS__:用于在宏替换部分中,表示可变参数列表
代码示例:
#include <stdio.h>
#define LOG(...) printf(__VA_ARGS__)
#define LOGSTR(fm,...) printf(fm,__VA__ARGS__)
int main()
{
LOG("This Time is %d o'clock\n",9);//This Time is %d o'clock和9都是可变参数
LOG("This Time is %d:%d:%d\n",18,21,23);
LOGSTR("data = %d%s\n",100,RMB);//fm是data = %d%s\n; 100和RMB是可变参数
return 0;
}
输出结果:
This Time is 9 o'clock
This Time is 18:21:23
data = 100RMB