gpt4 book ai didi

C 宏串联创建结构体

转载 作者:行者123 更新时间:2023-12-02 08:56:00 26 4
gpt4 key购买 nike

我正在尝试创建一个宏,以在 C 语言的简单“数据库”中自动创建不同类型变量的访问器。这是通过结构完成的:

typedef struct {
int var1;
long var2;
double var3;
int var4;
} dataNames_t;

但是为了实现自动化,我想创建一堆宏来模拟函数重载,这样我就不必拥有单独的 getIntgetBoolgetLong等函数。我们经常这样做,因此我们可以非常快速地将条目添加到非常相似的事物的长列表中。这样我们就不必修改文件中的 5 个位置来添加条目。但是,我似乎无法弄清楚它的结构。

#define DATA_LIST        \
DM(var1, int), \
DM(var2, long), \
DM(var3, double), \
DM(var4, int)

#define DM(y, z) z y;

/* create data structure from the macro */
typedef struct {
DATA_LIST
} dataNames_t;

该结构的计算结果应为第一个结构,但有些东西无法正常工作。

#define DM(y, z)    z y##;

也不起作用。

最佳答案

问题出在 DATA_LIST 中每个 DM(...) 末尾的逗号;您的结构有效地扩展到:

typedef struct {
int var1;,
long var2;,
double var3;,
int var4;
} dataNames_t;

将您的DATA_LIST更改为:

#define DATA_LIST       \
DM(var1, int) \
DM(var2, long) \
DM(var3, double) \
DM(var4, int)

关于C 宏串联创建结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4788739/

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