使用宏访问 C 中的结构成员名称

Accessing struct member name in C using Macros

本文关键字:结构 成员 访问      更新时间:2023-10-16

我在C中使用宏时遇到了一些问题。我需要访问结构成员的名称。我从这个链接中找到了C++的解决方案 这里!!.现在我正在尝试将其转换为 C,但我不能在结构中包含该函数。这是我唯一能做的:

typedef struct ms ms;
struct ms{
#define SM(y, z) z y;
SM(author, char*);
SM(title, char*);
SM(year, int);
void (*set)(char* fname, char* val);
#undef SM
};

然后,函数:

void set(char* fname, char* val)
{
   //code
}

但是我不知道我应该如何填写代码函数以获得与我之前提到的链接相同的解决方案。我需要帮助:(任何人?

必须使用 strcpy 复制字符串。 因此,author字段将填充为

struct ms myvar;
#define setstr(author,val) strcpy ( (myvar.author), val )

int可以定期分配

#define setint(year,val) myvar.year=val