긴 변환에서 짧은 변환으로 인해 데이터 손실에 대한 경고가 생성되는 gcc 플래그가 있습니까?Visual Studio의 데이터 손실 가능성과 유사한 gcc 4.2 경고가 있습니까?
저는 Visual Studio (2005)와 GCC 4.2 (Mac OS X 용) 용으로 컴파일 된 C++ 응용 프로그램을 만들고 있습니다.
Visual Studio를 프린트 아웃이 패턴을 따르도록 경고 :
: warning C4244: 'argument' : conversion from 'long' to 'short', possible loss of data
내가 -Wconversion을 시도했습니다,하지만 그건 내가 찾고 꽤 무엇되지 않습니다. 내가 지금까지 찾을 수 있었던 유일한 것은 실험적인 깃발, GCC 4.3 (우리가 아직 꽤 투자하고 싶은지 확실하지 않은)과 관련된 강제이다.
2009 년 4 월 22 일 @ 11:00 EST 편집 : 명확히하기 위해 경고를보고 싶습니다. 데이터 손실이 언제 발생하는지 알고 싶다면 코드를 작성하십시오. 나는 코드가있는 경우 :
이 값 1 : 2147483647
값 2 : 65535 우리의 코드에서
, 우리는 특별한이
unsigned long value1 = LONG_MAX;
std::cout << "value1: " << value1 << std::endl;
unsigned short value2 = value1;
std::cout << "value2: " << value2 << std::endl;
을 나는이 예상 결과를 얻을 수 강제 실행을 수행하고 실행 된 코드로 인해 데이터가 손실 될 경우 경고합니다. 우리는 Visual Studio의 경고를 사용하여 큰 코드 기반에 장소를 발견했습니다.
gcc 4.2에서 이러한 경고를 생성 할 수있는 방법이 있습니까?
가능한 데이터 손실 검증을 위해서'-Wshorten-64-to-32'를 시도하십시오. '-Wconversion'은 또한 signedness 에러 (잔인 함)를 검사 할 것입니다. – rustyx
'-Wshorten-64-to-32'는 GCC에 의해 받아 들여지지 않고, Clang에 의해서만 받아 들여집니다. – Andy