Переслать объявление enum в заголовке C, включенном в C++
У меня есть заголовки C, которые вперед объявляют перечисления. По-видимому, это невозможно в C++, поэтому все препроцессорные обертки вида
extern "C" { #include}
не собираемся помогать. Есть ли способ включить эти заголовки в модуль перевода C++, не требуя от меня редактирования заголовков C? К счастью, изменение заголовков C во избежание предварительного объявления в этом случае является относительно безболезненным, но это кажется мне довольно серьезной проблемой. В общем, я думал, что всегда можно ссылаться на библиотеку C из C++, но невозможность включить заголовок в некоторых случаях делает это непрактичным.
1 ответ
Объявленные вперед перечисления доступны в C++0x. Если ваш компилятор пока не поддерживает его, то перенос перечислений в пространствах имен позволит избежать нарушения ODR.
PS хорошее объяснение: http://www.devx.com/cplus/Article/42478/1954?pf=true