Прямое объявление перечисления в C++, определенного в C ⇐ C++
Прямое объявление перечисления в C++, определенного в C
Я искал предварительные объявления и не нашел способа заставить мою ситуацию работать. Итак, вот оно:
1) Имеется файл C-header. Это, так сказать, интерфейс экспорта для большого многокомпонентного программного обеспечения, содержащего определение типа перечисления
"export.h":
// Это на "C"! typedef enum _VM_TYPE {...., ...., ...,} VM_TYPE; 2) Часть кода на C++ использует этот экспорт.
"cpp_code.cpp":
// Это на C++ #include "export.h" #include "cpp_header.hpp" { .... использование значений VM_TYPE для выполнения каких-либо действий....} "cpp_header.hpp":
// Мне нужно как-то переслать сюда объявление VM_TYPE, но как? Структура VM_INFO { .... VM_TYPE VТип; // Мне нужно добавить это перечисление в структуру .... }; Совершенно очевидно, что проблема в файле cpp_head.hpp, поскольку он не знает о перечислении.
Я попробовал добавить в cpp_header.hpp:
typedef enum _VM_TYPE VM_TYPE; И это действительно сработает. Так почему же это работает? Это потому, что у него синтаксис в стиле C?! В любом случае, вышестоящее «руководство» посоветовало мне не делать этого («здесь C++, а не C»).
Есть ли другой способ заставить это работать вообще, исходя из того, как все связано в настоящее время? Они не хотят изменять/добавлять включаемые файлы; «Класс перечисления» предназначен только для C++, верно? Добавление просто «enum VM_TYPE» в cpp_header.hpp приведет к ошибке переопределения.
Что я могу сделать?
Я искал предварительные объявления и не нашел способа заставить мою ситуацию работать. Итак, вот оно:
1) Имеется файл C-header. Это, так сказать, интерфейс экспорта для большого многокомпонентного программного обеспечения, содержащего определение типа перечисления
"export.h":
// Это на "C"! typedef enum _VM_TYPE {...., ...., ...,} VM_TYPE; 2) Часть кода на C++ использует этот экспорт.
"cpp_code.cpp":
// Это на C++ #include "export.h" #include "cpp_header.hpp" { .... использование значений VM_TYPE для выполнения каких-либо действий....} "cpp_header.hpp":
// Мне нужно как-то переслать сюда объявление VM_TYPE, но как? Структура VM_INFO { .... VM_TYPE VТип; // Мне нужно добавить это перечисление в структуру .... }; Совершенно очевидно, что проблема в файле cpp_head.hpp, поскольку он не знает о перечислении.
Я попробовал добавить в cpp_header.hpp:
typedef enum _VM_TYPE VM_TYPE; И это действительно сработает. Так почему же это работает? Это потому, что у него синтаксис в стиле C?! В любом случае, вышестоящее «руководство» посоветовало мне не делать этого («здесь C++, а не C»).
Есть ли другой способ заставить это работать вообще, исходя из того, как все связано в настоящее время? Они не хотят изменять/добавлять включаемые файлы; «Класс перечисления» предназначен только для C++, верно? Добавление просто «enum VM_TYPE» в cpp_header.hpp приведет к ошибке переопределения.
Что я могу сделать?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Android + Kotlin: отменяет ли объявление «Кнопка» объявление «@Composable»?
Anonymous » » в форуме Android - 0 Ответы
- 35 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Объявление AdMob, показывающее развивающееся объявление на некоторых устройствах.
Anonymous » » в форуме Android - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Форвардное объявление члена перечисления специализации шаблона - не работает с GCC
Anonymous » » в форуме C++ - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как передать переменную перечисления в структуру со специализацией шаблона для перечисления
Anonymous » » в форуме C++ - 0 Ответы
- 79 Просмотры
-
Последнее сообщение Anonymous
-