1

我有以下声明:

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: syntax error : missing ')' before '=' 并且宏 DLL 如下:

#define DLL __declspec(dllimport)
4

1 回答 1

3

C 中没有默认参数。

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

例如

#ifdef __cplusplus
// C++ function declaration...
#else
// C function declaration...
#endif
于 2014-10-25T07:22:51.657 回答