-1

出于某种原因, floor() 是 VC11 中的一个重载函数,即使它正在编译 C 源文件。在我的代码中,“floor”用于初始化结构中的 void 指针。它现在导致错误,因为 VC11 无法确定要使用的函数版本。

4

1 回答 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 回答