【问题标题】:Warnings with Eigen 3.3.4 after upgrading from GCC 5.4 to GCC 7.2从 GCC 5.4 升级到 GCC 7.2 后 Eigen 3.3.4 的警告
【发布时间】:2017-11-25 05:49:39
【问题描述】:

当我使用 GCC 5.4 使用 -Wall -Werror 编译我的代码时,它工作正常。当我使用 GCC 7.2(作为本机编译器从源代码构建)尝试它时,它给出了:

error: enum constant in boolean context [-Werror=int-in-bool-context]
 MayLinearVectorize = bool(MightVectorize) && MayLinearize && DstHasDirectAccess

重现问题的小例子:

#include <Eigen/Dense>

using namespace Eigen;

int main()
{
    Matrix<double,Dynamic,1> v = Matrix<double,Dynamic,1>::Constant(5, 1);
    return 0;
}

g++7 eigtrivial.cpp -I$EIGEN_DIR -Wall -Werror编译。

如果我尝试不使用-Werror,我会收到警告,但它会编译,并且我的所有(少数)测试都通过了——据我所知,这很好。但是,我想保留所有警告并启用-Werror。任何人都可以对此有所了解吗?

【问题讨论】:

  • Eigen 中出现了警告,不是吗?您应该向 bugzilla 报告问题... 解决方法:使用 #pragma GCC diagnostic ignored
  • 很久以前在 3.3 和开发分支中已经修复了这个问题
  • 但我昨天刚刚从下载页面下载了一份新副本。

标签: c++ gcc eigen eigen3


【解决方案1】:

正如 ggael 所说,这已得到修复,但尚未在官方 tarball 中。从 Mercurial 存储库(目前为 3.3.90 版)克隆并在我的代码中使用它修复了问题。

【讨论】:

  • 更新:此问题已在 3.3.5 及更高版本中修复。
猜你喜欢
  • 2018-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多