面试题答案
一键面试1. ##运算符连接标记的作用
在C语言中,##
运算符被称为连接运算符(token pasting operator),它的作用是将两个预处理标记(tokens)连接成一个预处理标记。在宏定义中使用##
运算符时,它会在预处理阶段将宏参数与其他标识符或者宏参数自身连接在一起,形成一个新的标识符。这样可以实现根据不同的参数生成不同的标识符,增加代码的灵活性和可复用性。
2. 代码示例
#include <stdio.h>
// 定义一个宏,使用##连接两个参数形成新的标识符
#define CONCAT(a, b) a##b
int main() {
int CONCAT(var, 1) = 10; // 展开后为 int var1 = 10;
printf("var1的值为: %d\n", CONCAT(var, 1));
return 0;
}
在上述代码中,CONCAT
宏使用##
将参数a
和b
连接在一起。在main
函数中,CONCAT(var, 1)
被预处理器展开为var1
,从而定义了一个名为var1
的整型变量并赋值为10,最后输出该变量的值。