2010-07-09 3 views
7

-Wall -Wextra -Wconversion을 g ++ 4.1.2에서 사용하면서 경고없이 다음 코드를 컴파일하면 매우 놀랍습니다.컴파일 경고 방법

나는 잠재적 인 위험을 피하기 위해 모든 경고를 보여 주길 바랍니다. 나는 g ++ 4.1.2를 고수해야한다.

#include <stdint.h> 
#include <string> 

using namespace std; 

int main() 
{ 
    uint8_t u1=1; 
    uint64_t u64=1000; 
    string s1=""; 

    u1=u64; // want warning here 
    s1=u64; // want warning here 
    s1=u1; 
} 
+2

나는 영어 문구가 "원하는"것이고, "원하지"않는다고 생각할 것입니다. – paxdiablo

+0

그리고 마지막 줄에 경고가 필요하지 않습니까? unsigned char에서 string으로의 할당의 의미는 무엇입니까? –

+0

@David :'string'은'operator = (char)'를가집니다. –

답변

4

이전에 GCC 4.3이 지원하지 않는 것 같습니다. -Wconversion의 설명이 새로운 경고 동작을 반영하기 위해 4.2와 4.3 사이에서 변경되었으며, 4.3 이전 GCC가이를 확인한다는 표시는 없습니다.

+2

나는 그것을 확인할 수있다. gcc 4.3은 경고를 내고, 4.2는 – Anycorn

+0

이 아니다. GCC 4.4가 경고를 내고 또한 -Wconversion이 가능하게 된 것을 확인할 수있다. – rubenvb

+0

Thx. 그렇다면 정적 C++ 코드 분석 도구를 찾아야 할 것입니다. – lyman