gpt4 book ai didi

c - 使用 c Token-Pasting 访问结构中的字段

转载 作者:太空狗 更新时间:2023-10-29 17:19:43 26 4
gpt4 key购买 nike

我正在尝试使用 c 标记粘贴 (##) 来访问结构字段,如下所示:

typedef struct
{
int a;
int b;
} TMP_T;

#define BUILD_FIELD(field) my_struct.##field

int main()
{
TMP_T my_struct;
BUILD_FIELD(a) = 5;
return 0;
}

但是在编译过程中出现如下错误:错误:粘贴“。”并且“a”没有提供有效的预处理标记

我想补充一点:

 typedef struct {
int a;
int b;
}TMP_T;

#define BUILD_FIELD(my_struct,field) my_struct.##field


void func(char* name)
{
TMP_T tmp_str;
if((name == "a") || (name == "b"))
{
BUILD_FIELD(tmp_str, name) = 7;
printf("%d \n", BUILD_FIELD(a) );
}


}

int main()
{

func("a");
return 1;
}

我应该如何使用宏来访问特定的结构和字段。是否可以?或者因为它是预编译的,所以无法为各种字段定义 (a,b)

谢谢动机

最佳答案

您根本不需要粘贴 token :

#define BUILD_FIELD(field) my_struct.field

根据gcc manual标记粘贴应该在连接后产生一个标识符或一个数字。错误是由于 .a 两者都不是。

关于c - 使用 c Token-Pasting 访问结构中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20056132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com