我刚刚使用std::copysign找出了我测试的平台之间的一些不兼容之处。
在第一次测试中,我尝试在MSVC中测试一些算法。现在,我尝试将这段c++(11)代码移植到Xilinx Zynq平台(A9+FPGA)。
到目前为止,这是有效的,除了没有包括cmath在内的std::copysign。所以我必须使用不带名称空间的copysign。
将此函数添加到名称空间的正确方法是什么?
PS:我不想仅仅因为名称空间不兼容而手动管理不同平台上的相同文件。
编译标志为:
-c -fmessage-length=0 -MT"$@" -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -std=c++11发布于 2016-11-28 23:16:05
你可以为msvc创建一个宏。
#if defined(_MSC_VER)
#define copysign std::copysign
#endif但是,c++11应该具有std名称空间。如果你不是在启用c++11的情况下编译,你可能会得到一组更老的库?我会去确认一下你是不是。如果你不能在你的平台上使用c++11编译,那么上面的方法应该可以工作。如果需要,可以添加更多的预处理器标志来瞄准更多的平台。
另一种选择是
using namespace std;这将涵盖这两种情况。
https://stackoverflow.com/questions/40847529
复制相似问题