У меня есть следующая структура (упрощенно):
struct error_t{
const char *file;
const char *error_desc;
};
Я написал макрос для создания структуры
#define ERROR_SET(error_desc) \
{ \
struct error_t tmp = {.error_desc = error_desc, .file = __FILE__}; \
struct error_t *ptr = malloc(sizeof(*ptr)); \
memcpy(ptr, &tmp, sizeof(tmp)); \
*error_ptr = ptr; \
}
Проблема в том, что на линии
struct error_t tmp = {.error_desc = error_desc, .file = __FILE__}
оба error_desc
s .error_desc = error_desc
заменены, что не то, что я хотел. Единственное решение, которое я вижу, - переименовать параметр макрофункции с error_desc
на _error_desc
, но, возможно, есть лучший способ. Может быть, мы можем «убежать» от error_desc
для замены в .error_desc
?