面试题答案
一键面试// 连接两个标识符的宏定义
#define CONCAT(a, b) a ## b
// 将参数转换为字符串常量的宏定义
#define STRINGIFY(x) #x
// 调用示例
#include <stdio.h>
int main() {
// 连接两个标识符
int CONCAT(var, 1) = 10;
printf("CONCAT(var, 1)的值为: %d\n", CONCAT(var, 1));
// 将参数转换为字符串
printf("STRINGIFY(1 + 2)的结果为: %s\n", STRINGIFY(1 + 2));
return 0;
}
解释:
CONCAT(a, b)
宏使用##
运算符将a
和b
连接成一个新的标识符。在示例中,CONCAT(var, 1)
会被替换为var1
,并定义了一个int
类型变量var1
且赋值为10
。STRINGIFY(x)
宏使用#
运算符将x
转换为字符串常量。在示例中,STRINGIFY(1 + 2)
会被替换为"1 + 2"
,然后通过printf
输出。