2017-03-22 11 views
4

, 나는이 CPP 파일상당히 큰 코드베이스에서

int main() 
{ 
    bool b; 
    //... some code ...; 
    b = "False" 
} 

에 다음 구조 (다시 조각)을 발견 GCC에서 부울 변환 리터럴 문자열에 대한 경고이 완전히 합법적 인 코드가되어 있지만, 명확하게 고의적이지 않다. 그것은 쉽게 고칠 수 있지만 2014 년 이후로 누구도 눈치 채지 못했기 때문에 존재했기 때문에 분명히 발견하기가 쉽지 않습니다.

gcc가 이에 대해 경고 할 수 있습니까?

+0

g ++ 7도 clang ++ 5도'-Wall -Wextra -Wpedantic'로 경고하지 않습니다. 와우. –

+0

fyi :'bool b { "거짓"}; "도 컴파일됩니다. 그러나'char const pc [] = "false"; bool b {pc}; 경고 : _ "경고 : 'pc'의 주소는 항상 'true'로 평가됩니다 [-Waddress]"_ –

+0

[여기] (https://gcc.gnu.org) /onlinedocs/gcc/Warning-Options.html) 아무것도 찾을 수 없습니다. – NathanOliver

답변

1

어느 g ++ 5-Wall -Wextra -Wpedantic으로 경고 ++도 7연타.

Clang은 실수를 잡을 수있는 -Wstring-conversion이라는 경고를 가지고 있지만 gcc는이를 가지고 있지 않습니다. 나는 간단히 the gcc warning documentation page을 훑어보고 실수를 잡을만한 것을 찾지 못했습니다. 나는 GCC 버그 추적기에 기능 제안에 대한 보고서를 제출 한 live wandbox example


enter image description here

: #80151.