#include <stdio.h>
//邻近字符串会自动连接,"A""B" 相当于"AB"
#define PRINT(FORMAT, VALUE) \
printf("The value of " #VALUE " is "\
FORMAT "\n", VALUE)
#define PRINT_USE_NUMBER_SIGN(FORMAT, VALUE) \
printf("The value of " #VALUE " is "\
#FORMAT "\n", VALUE)
//## 预处理时,将位于两边的符号连接成一个符号
#define ADD_TO_SUM(sum_number, value) \
sum ## sum_number += value
int main ()
{
int sum5 = 1;
PRINT("%d", 3 + 1);
PRINT_USE_NUMBER_SIGN(%d, 3 + 1);
//宏参数前面加个Number Sign (#),预处理会将该宏参数转换为字符串
//故PRINT_USE_NUMBER_SIGN中的%d不用加双引号
ADD_TO_SUM(5, 10);
printf("%d\n", sum5);
return 0;
}
$ gcc -E 1.c
printf("The value of " "3 + 1" " is " "%d" "\n", 3 + 1);
printf("The value of " "3 + 1" " is " "%d" "\n", 3 + 1);
sum5 += 10;
$ ./1
The value of 3 + 1 is 4
The value of 3 + 1 is 4
11
宏参数与字符串
最新推荐文章于 2025-03-22 23:33:55 发布
本文介绍了一种使用C语言预处理宏进行复杂操作的方法。通过示例展示了如何利用宏定义来实现值的打印及字符串化,并展示了一种特殊的宏用法,即在宏参数前加上NumberSign (#),使预处理器将参数转换为字符串。此外还介绍了一个可以将两个参数组合起来进行数学运算的宏。
457

被折叠的 条评论
为什么被折叠?



