使用 CMake 和 GCC 构建的 C++ 程序在 Mac 上测试失败,但在 Linux 上测试失败

问题描述 投票:0回答:1

我有一个接受超椭圆和一个点的函数,它应该告诉我该点是在超椭圆内部还是外部。这个函数在 Mac 上运行时工作得很好,但在 Linux Mint 上运行时就不起作用了。该函数将编译并运行,但它未通过我给它的特定测试。这些测试的点相对靠近超椭圆的边缘。这些似乎总是假阴性而不是假阳性,也就是说,当它们应该返回 true 时,它们往往会返回 false,但反之则不然。

该函数被构建到一个库中,然后链接到一个对其运行测试的测试文件。

测试是使用测试框架 Catch2 并在专用主函数内部运行的,每次都失败。

我还尝试将所有浮点数的精度提高到双精度,但这并没有改变结果。

c++ gcc cmake platform
1个回答
0
投票

Igor G 发布了有关未定义行为的信息。事实证明, std::abs 函数具有未定义的行为,从而导致了该问题。谢谢你。

© www.soinside.com 2019 - 2024. All rights reserved.