Я использую внешнюю библиотеку C внутри проекта С++.
Заголовок содержит структуру с переменной с именем class
:
#ifdef __cplusplus
extern "C" {
#endif
struct something_t {
...
sometype class;
};
#ifdef __cplusplus
}
#endif
g++ не нравится это и жалуется на "ошибка: ожидаемый идентификатор до"; лексема".
Какие у меня есть варианты?
- Я мог бы переименовать
class
, но это громоздко и разрывает совместимость с восходящим потоком. - Я мог бы попросить восходящий проект переименовать переменную, но это может быть сложно.
- Я мог бы переопределить
class
в заголовке с помощью препроцессора:#define class class_
Есть ли какие-либо побочные эффекты? - Любые другие предложения?
Какой лучший способ справиться с этой ситуацией?
Результат: Основываясь на преобладающем предпочтении опции 2, я, наконец, решил инициировать переименование в восходящей библиотеке.