特征错误:请使用密码保护您的最小值
Eigen error: please_protect_your_min_with_parentheses
我正试图通过运行包附带的测试代码来测试Eigen的非线性优化功能。
我被这些错误卡住了(更像是困惑):
Error 5 error C2039: 'please_protect_your_min_with_parentheses' : is not a member of 'std::numeric_limits<double>' c:program files (x86)microsoft sdkswindowsv7.0aincludeeigen-eigen-5097c01bcdc4unsupportedeigensrcnonlinearoptimizationlmpar.h 184
Error 7 error C2039: 'please_protect_your_min_with_parentheses' : is not a member of 'std::numeric_limits<double>' c:program files (x86)microsoft sdkswindowsv7.0aincludeeigen-eigen-5097c01bcdc4unsupportedeigensrcnonlinearoptimizationlmpar.h 28
Error 6 error C2065: 'please_protect_your_min_with_parentheses' : undeclared identifier c:program files (x86)microsoft sdkswindowsv7.0aincludeeigen-eigen-5097c01bcdc4unsupportedeigensrcnonlinearoptimizationlmpar.h 184
Error 8 error C2065: 'please_protect_your_min_with_parentheses' : undeclared identifier c:program files (x86)microsoft sdkswindowsv7.0aincludeeigen-eigen-5097c01bcdc4unsupportedeigensrcnonlinearoptimizationlmpar.h 28
顺便说一下,(我认为)导致这种情况的原因是这样的:
#define min(A,B) please_protect_your_min_with_parentheses
错误指的是这一行(在上面提到的两个不同的地方,即第28行和第184行):
const Scalar dwarf = std::numeric_limits<Scalar>::min();
将非常感谢任何建议
它请求您将行更改为以下行:
const Scalar dwarf = (std::numeric_limits<Scalar>::min)();
这样,如果定义了类似于宏的min
函数,它就不会被替换。
问题是Microsoft Windows标头定义了min
宏,因此包含Windows标头的标准C++代码可能无法编译。可移植C++库实现的解决方案是用括号包装它们对标准min
函数的调用,如上所述。您编译的测试代码似乎可以检查代码是否使用了这种技术。
上述方法的问题是,您将无法使用依赖于参数的查找来执行对min(a,b)
的非限定调用,因为添加括号会导致名称的查找独立于参数。
另一种可以应用于自己代码的解决方案是在包括任何Windows标头或取消定义min
/max
宏之前定义NOMINMAX标志。这通常不是由库代码完成的,因为它们不应该调整用户代码的配置。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 使用递归的数组的最小值.这是怎么回事
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 在二维数组中查找最小值和最大值?
- 有没有办法使用递归函数找到数组中最小值的 INDEX?C++
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- C++ 函数,用于查找传入的 N 个数字的平均值、总和、最小值和最大值
- txt 文件中浮点数的最大和最小值
- 余数运算符的等效操作,用于处理低于允许的最小值
- 需要使用模板查找数组的第二个最小和最小值
- CUDA - 将 float3 数组的 (x,y,z) 分量的最小值/最大值分开?
- 查找包含 N 个元素的数组的最小值和最大值
- 错误C++在Visual Studio 2019中使用numeric_limits的长双精度最小值/最大值
- 是否存在用于 C 或 C++ 中常见数学运算(例如最小值、最大值和平均值)的可导入库?
- 如何在 c++ 中创建对的优先级队列.这会弹出具有最小值的元素.默认的弹出最大值
- 将最小值整数转换为无符号长整型
- 查找 std::vector 中的最小值和最大值 std::p air
- 如何找到每行的最大值和最小值
- 特征错误:请使用密码保护您的最小值