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

最佳答案

Visual Studio从未高度兼容C。您可以put the compiler in C mode,但是我不确定这是否可以解决头文件问题。

如果不是,则可能的解决方法是检测编译器是否为C ++,并且将floor的“值”强制转换为所需重载的签名,例如:

#ifdef __cplusplus
void* fp = reinterpret_cast<void*>((double (*)(double)) floor);
#else
void* fp = floor;
#endif

关于c - 如何在VC11中获取floor()的地址?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18678998/

10-15 00:34