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