在函数定义中指定参数默认值会导致错误 C2143:语法错误:'='之前缺少')'
specifying argument default value in function definition causes error C2143: syntax error : missing ')' before '='
我有以下声明:
DLL EntityHandle scenemanager_create_entity
(SceneManagerHandle handle,
const char* name,
const char* mesh_name,
const char* group_name = 0);
其中最后一个agrument具有默认值CCD_ 1。
当我编译C++DLL(/TP)时,它运行良好,编译宏DLL时如下:
#define DLL extern "C" __declspec(dllexport)
但是,当我试图编译与此DLL链接的C应用程序(/TC)时,它会出现错误C2143:语法错误:在"="之前缺少")",宏DLL如下:
#define DLL __declspec(dllimport)
C.中没有默认参数
您可以使用宏__cplusplus
来检查代码是由C++编译器还是C编译器编译的。
例如
#ifdef __cplusplus
// C++ function declaration...
#else
// C function declaration...
#endif
相关文章:
- 链接器错误:函数的多个定义
- 编译器错误:函数调用在常量表达式中必须有一个常量值
- 错误:函数声明符之后的预期函数体
- C 错误 - 函数不能超载
- 如何修复传递参数时调用错误函数的主函数?(C++)
- 错误:函数调用中有两个参数
- 错误:函数不是“类”的静态数据成员 - C++
- C ,G 编译错误函数
- CMake 解析错误函数缺少结尾")"。而是找到带有文本的未终止字符串")
- C++ 错误 函数 2 的多重定义
- 错误:函数调用中从int到int(*)[4]的转换无效
- C++14 自动扣除错误:函数返回一个数组
- 视觉C++错误:函数必须返回一个值
- 错误:函数声明中的两种或多种数据类型
- 错误:函数未在作用域中声明
- rtw_android.c错误:函数“strnicmp”的隐式声明[-Weror=隐式函数声明]
- 错误:函数中的return语句没有值,返回“void*”[-fpermission]
- 简单程序中的链接器错误:函数的多重定义
- 错误:函数参数太多
- 错误:函数__tmaincrtstartup中引用的未解析的外部符号_main