У меня есть некоторые проблемы с использованием макросов в C. Мне нужно получить доступ к имени члена структуры. И я нашел решение этого в C++ по этой ссылке ЗДЕСЬ !!! , Теперь я пытаюсь перевести его на C, но я не могу иметь функцию в struct. Это единственное, что я могу сделать:
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
set("author","John");
что-то вроде того.
"author"
а затем измените myvar.author
или любое другое поле, которое вы пытаетесь использовать.