Я пытаюсь создать макрос для автоматизации создания методов доступа для различных типов переменных в простой «базе данных» на C. Это делается через структуру:
typedef struct {
int var1;
long var2;
double var3;
int var4;
} dataNames_t;
Но для автоматизации вещей я хотел бы создать несколько макросов, имитирующих перегрузку функций, чтобы мне не приходилось иметь отдельные функции getInt
, getBool
, getLong
и т. Д. Мы делаем это довольно часто, поэтому мы можем очень быстро добавлять записи в длинные списки очень похожих вещей. Таким образом, нам не нужно изменять 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##;
тоже не работает.