Переслать объявление enum в заголовке C, включенном в C++

У меня есть заголовки C, которые вперед объявляют перечисления. По-видимому, это невозможно в C++, поэтому все препроцессорные обертки вида

extern "C" {
  #include }

не собираемся помогать. Есть ли способ включить эти заголовки в модуль перевода C++, не требуя от меня редактирования заголовков C? К счастью, изменение заголовков C во избежание предварительного объявления в этом случае является относительно безболезненным, но это кажется мне довольно серьезной проблемой. В общем, я думал, что всегда можно ссылаться на библиотеку C из C++, но невозможность включить заголовок в некоторых случаях делает это непрактичным.

Несколько связанные вопросы: 71416 681243

1 ответ

Решение

Объявленные вперед перечисления доступны в C++0x. Если ваш компилятор пока не поддерживает его, то перенос перечислений в пространствах имен позволит избежать нарушения ODR.

PS хорошее объяснение: http://www.devx.com/cplus/Article/42478/1954?pf=true

Другие вопросы по тегам