出于某种原因, floor() 是 VC11 中的一个重载函数,即使它正在编译 C 源文件。在我的代码中,“floor”用于初始化结构中的 void 指针。它现在导致错误,因为 VC11 无法确定要使用的函数版本。
问问题
138 次
1 回答
0
Visual Studio 从未以高度 C 兼容而闻名。您可以将编译器置于 C 模式,但我不确定这是否能解决头文件问题。
如果不是,一种可能的解决方法是检测编译器是否为 C++,如果是,则将“值”floor
转换为所需重载的签名,例如:
#ifdef __cplusplus
void* fp = reinterpret_cast<void*>((double (*)(double)) floor);
#else
void* fp = floor;
#endif
于 2013-09-07T23:51:28.123 回答