2017-11-25 11 views
1

-Wall -Werror으로 코드를 컴파일 할 때 GCC 5.4를 사용하면 정상적으로 작동합니다. 내가 GCC 7.2 (네이티브 컴파일러와 같은 소스에서 내장)와 그것을 시도 할 때,이 있습니다 :GCC 5.4에서 GCC 7.2로 업그레이드 한 후 Eigen 3.3.4와의 경고

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을 사용하려고합니다. 아무도 이것에 약간의 빛을 던질 수 있습니까?

+0

Eigen에서 경고가 발생 했습니까? 아닙니다. 당신은 bugzilla에게 문제를보고해야합니다 ... 해결 방법 :'#pragma GCC diagnostic ignored'을 사용하십시오 – yumetodo

+0

이것은 3.3에서 오래 전에 고쳐졌고 – ggael

+0

지점을 devel했습니다. 그러나 방금 다운로드 페이지에서 새로운 사본을 어제 다운로드했습니다. –

답변

1

ggael이 말했듯이 이것은 아직 수정되었지만 공식 tarball에는 없습니다. Mercurial 저장소 (현재 버전 3.3.90)에서 복제하고이를 내 코드에서 사용하면 문제가 해결됩니다.