указание значения аргумента по умолчанию в определении функции приводит к ошибке C2143: синтаксическая ошибка: отсутствует ‘)’ перед ‘=’

У меня есть следующее заявление:

DLL EntityHandle scenemanager_create_entity
(SceneManagerHandle handle,
const char* name,
const char* mesh_name,
const char* group_name = 0);

где последний инструмент имеет значение по умолчанию group_name = 0,

Когда я компилирую C ++ DLL (/ TP), она работает нормально, и во время компиляции макросов DLL происходит следующее:

#define DLL extern "C" __declspec(dllexport)

Но когда я пытаюсь скомпилировать приложение C (/ TC), связанное с этой DLL, выдается ошибка C2143: синтаксическая ошибка: отсутствует ‘)’ перед ‘=’, а макрос DLL выглядит следующим образом:

#define DLL __declspec(dllimport)

1

Решение

В C. нет аргументов по умолчанию

Вы могли бы использовать макрос __cplusplus чтобы проверить, компилируется ли код компилятором C ++ или компилятором C.

Например

#ifdef __cplusplus
// C++ function declaration...
#else
// C function declaration...
#endif
3

Другие решения


По вопросам рекламы [email protected]