【发布时间】: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 和开发分支中已经修复了这个问题
-
但我昨天刚刚从下载页面下载了一份新副本。