При доступе к API C++ из C через оболочку, как мне получить доступ к типам перечислений?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 При доступе к API C++ из C через оболочку, как мне получить доступ к типам перечислений?

Сообщение Anonymous »


У меня есть программа на языке C, которую мне нужно подключить к API C++. Я спросил здесь, и мне дали отличный совет, который привел к созданию «обертки».

Итак, в API есть тип под названием APIName::ReturnCode, и я хотел создать эквивалент C, поэтому сделал следующее:

В c_api.h:

#ifdef __cplusplus #define EXTERNC extern "C" #еще #define EXTERNC #endif typedef void* API_ReturnCode_t; EXTERNC API_ReturnCode_t api_returncode_init(); EXTERNC void api_returncode_destroy (API_ReturnCode_t rc); #undef EXTERNC в c_api.cpp:

#include "c_api.h" #include "/путь/к/api/api.h" API_ReturnCode_t api_returncode_init() { вернуть новое APIName::ReturnCode; } void api_returncode_destroy (API_ReturnCode_t untyped_ptr) { APIName::ReturnCode* typed_ptr = static_cast< APIName::ReturnCode*>(untyped_ptr); удалить typed_ptr; } Поэтому я компилирую это в библиотеку, включаю в свою основную программу и могу использовать такие вещи, как:

API_ReturnCode rc; чтобы определить переменную.

Однако мой следующий вопрос — как определить перечислимые типы аналогичным образом. Итак, API имеет следующее определение кодов ошибок:

пространство имен APIName { typedef enum ReturnCode_enum ReturnCode; перечисление ReturnCode_enum { RC_OK, // успех RC_ERROR, // общая ошибка RC_NOT_AVAILABLE, // функция недоступна }; } Как мне воссоздать это в своей оболочке, чтобы можно было сделать что-то подобное в своем коде?
API_ReturnCode rc = API_RC_OK;
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»