将C++库转换为ANSI C,似乎ANSI C不支持函数变量的默认值,或者我错了?我想要的是类似的东西
int funcName(int foo, bar* = NULL);
Run Code Online (Sandbox Code Playgroud)
另外,ANSI C中的函数重载是否可行?
需要
const char* foo_property(foo_t* /* this */, int /* property_number*/);
const char* foo_property(foo_t* /* this */, const char* /* key */, int /* iter */);
Run Code Online (Sandbox Code Playgroud)
当然可以用不同的方式命名它们,但是习惯于C++,我曾经习惯于重载.
我有一个C++库,在头文件中声明了函数.我的函数声明包括默认参数.
我想通过Wolfram Mathematica WSTP模板编译器(wscc)在Mathematica中使用这个库.这需要将C接口写入我的库.我用过这种模式
#ifdef __cplusplus
extern "C" {
#endif
double my_function(double x, double abs_error = 1E-3);
#ifdef __cplusplus
}
#endif
Run Code Online (Sandbox Code Playgroud)
防止我的库中的名称错误(用C++编译).但是默认参数怎么样?我不认为它们是标准的C.我发现,来自Wolfram Mathematica WSTP模板编译器(wscc)
错误:预期';',','或')'在'='之前令牌double abs_error = 1E-3,
我是否必须单独生成C和C++声明(实际上是两个头文件)?这是一个常见问题还是与我使用wscc有关?也许wscc不支持这种语法,虽然通常可以接受?