在函数定义中指定参数默认值会导致错误C2143:语法错误:缺少')'之前' ='

时间:2014-10-25 07:19:18

标签: c++ c dll extern-c

我有以下声明:

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)

但是当我尝试编译与此DLL链接的C应用程序(/ TC)时,它会给出错误C2143:语法错误:缺少')'之前' ='和宏DLL如下:

#define DLL __declspec(dllimport)

1 个答案:

答案 0 :(得分:3)

C中没有默认参数。

您可以使用宏__cplusplus来检查代码是由C ++编译器还是C编译器编译。

例如

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