C语言常用的宏定义

1 特殊的宏
C几种特殊标准定义

__FILE__ :文件名, 用%s接收
__LINE__ :行号,用%d接收
__FUNC__ : 函数名, 用%s接收
__DATE__:编译时刻的日期字符串,%s接收
__TIME__:编译时刻的时间字符串,%s接收
__STDC__:判断该文件是不是标准C程序
#ifdef __STDC__
printf('标准C代码文件\n');
#else
printf('非标准C代码文件\n');
#endif


2 求最大值和最小值

#define MIN(a, b) ((a) < (b) ? (a) : (b)) //得到最小值
#define MAX(a, b) ((a) < (b) ? (b) : (a)) //得到最大值

 

3 求数组长度

#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))

 

4 拼接两个参数

#define CONCAT_2(p1, p2) CONCAT_2_(p1, p2)
#define CONCAT_2_(p1, p2) p1##p2

 

5 可变参数取值

//获得第一个元素
#define GET_VA_ARG_1(...) GET_VA_ARG_1_(__VA_ARGS__, )
#define GET_VA_ARG_1_(a1, ...) a1

//获得除了第一个元素外的其他元素
#define GET_ARGS_AFTER_1(...) GET_ARGS_AFTER_1_(__VA_ARGS__, )
#define GET_ARGS_AFTER_1_(a1, ...) __VA_ARGS__

 

6 设置一个字的某一个比特

//将一个字W的第B个bit置位
#define SET_BIT(W, B) ((W) |= (uint32_t)(1U << (B)))

//将一个字W的第B个bit清空
#define CLR_BIT(W, B) ((W) &= (~(uint32_t)(1U << (B))))

 

posted @ 2022-07-11 17:12  quliuliu2013  阅读(266)  评论(0编辑  收藏  举报