У меня есть следующее заявление:
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)
В C. нет аргументов по умолчанию
Вы могли бы использовать макрос __cplusplus
чтобы проверить, компилируется ли код компилятором C ++ или компилятором C.
Например
#ifdef __cplusplus
// C++ function declaration...
#else
// C function declaration...
#endif