2014-10-25 1 views
1

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

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

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

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

#define DLL extern "C" __declspec(dllexport) 

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

#define DLL __declspec(dllimport) 

ответ

3

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

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

Например

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

пе ZnAl, Spasibo! –

 Смежные вопросы

  • Нет связанных вопросов^_^