2010-01-04 3 views
6
int i = 3.1/2 

-Wall 옵션을 사용하는 경우에도 경고가 발생하지 않습니다. 때로는 정확도가 떨어지는 부분을 알고 싶습니다. 왜 msvc가이 경고를 지원하지만 gcc가이 경고를 지원하지 않습니까?double에 int를 대입해도 gcc 경고가 발생하지 않는 이유는 무엇입니까?

감사합니다.

편집 : 내 gcc가 -v는

Configured with: ../../gcc-4.4.1/configure --prefix=/mingw --build=mingw32 --enable-languages=c,ada,c++,fortran,objc,obj-c++ --disable-nls --disable-win32-registry --enable-libgomp --enable-cxx-flags='-fno-function-sections -fno-data-sections' --disable-werror --enable-threads --disable-symvers --enable-version-specific-runtime-libs --enable-fully-dynamic-string --with-pkgversion='TDM-2 mingw32' --enable-sjlj-exceptions --with-bugurl=http://www.tdragon.net/recentgcc/bugs.php

+2

-Wall이 현재 컴파일러에서 지원하는 모든 경고를 설정하지 않는다는 것을 아는 것이 유용 할 수 있습니다. 몇 년 전에 사용 가능한 일련의 경고입니다. -Wextra를 사용하면 몇 가지 더 추가됩니다. 단, 잘라내기에 경고가 포함되는지 여부는 확실하지 않습니다. – Dipstick

+5

아마도 "3.1"에 대한 경고가 있어야합니다.이 숫자는 IEEE 754 부동 소수점 이중에서 정확하게 표현할 수 없기 때문입니다. 그리고 이것이 gcc가 당신에게 경고하지 않는 이유 일 수 있습니다 : 당신은 유용하지 않을 것이라는 경고를 많이 받게 될 것입니다. –

+1

@chrisharris : -Wall -Wextra -ansi -pedantic 인 경우에도 작동하지 않습니다. – Jichao

답변

10

-Wconversion가 암시 적 변환에 대한 경고이다.

+0

하지만 내 gcc-mingw에서 작동하지 않습니다. 3.4.5 – Jichao

+0

mingw가이 옵션을 인식합니까? gcc -v 옵션을 사용하여 확인하십시오. 더 자세한 정보를 얻으십시오. – Andy