面试题答案
一键面试#include <stdio.h>
struct MyStruct {
int value;
};
#define CONNECT_AND_ACCESS(struct_name, member_name) struct_name##_##member_name.value
int main() {
struct MyStruct struct1 = {10};
// 假设宏调用时传入 struct1 和 value
int result = CONNECT_AND_ACCESS(struct1, value);
printf("The value is: %d\n", result);
return 0;
}
在上述代码中:
- 定义了
struct MyStruct
结构体,它有一个int
类型的成员value
。 - 使用宏定义
CONNECT_AND_ACCESS
,它接受两个参数struct_name
和member_name
,使用##
运算符将它们连接起来,并通过连接后的标识符访问结构体成员。 - 在
main
函数中,创建了struct MyStruct
的实例struct1
并初始化其value
为 10。然后通过宏调用获取struct1
的value
成员的值并打印。