我有以下声明:
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)
答案 0 :(得分:3)
C中没有默认参数。
您可以使用宏__cplusplus
来检查代码是由C ++编译器还是C编译器编译。
例如
#ifdef __cplusplus
// C++ function declaration...
#else
// C function declaration...
#endif