모든 경고를 제거하는 것이 가장 좋습니다. 수천 가지 경고가 나오면 수정 사항의 우선 순위를 정해야합니다.
컴파일러를 가장 낮은 경고 수준으로 설정하십시오. 이러한 경고가 가장 중요합니다. 문제가 해결되면 경고 수준을 높이고 가장 높은 경고 수준에 도달 할 때까지 반복합니다. 그런 다음 경고가 오류로 처리되도록 컴파일 옵션을 설정하십시오.
무시할 수 있다고 의심되는 경고를 발견하면 이론을 검증하기위한 조사를 수행하십시오. 그런 다음 가능한 최소한의 방법으로 만 사용 중지하십시오. 대부분의 컴파일러는 #pragma
지시문을 사용하여 파일의 일부분 만 경고를 활성화/비활성화 할 수 있습니다. Visual C++ 예제는 다음과 같습니다.
typedef struct _X * X; // from external header, not 64-bit portable
#pragma warning(push)
#pragma warning(disable: 4312) // 64-bit portability warning
X x = reinterpret_cast<X>(0xDDDDDDDD); // we know X not 64-bit portable
#pragma warning(pop)
단 한 줄의 코드에 대해서만 경고를 비활성화합니다. 이 방법을 사용하면 나중에 코드를 변경하여 간단한 텍스트 검색을 수행 할 수 있습니다.
일반적으로 단일 파일이나 모든 파일에 대해 특정 경고를 비활성화 할 수 있습니다. IMHO 이것은 위험하며 최후의 수단이어야합니다.
아마도 더 나은 질문은 "경고를 수정합니까, 아니면 그럴 수 있습니까?" – ilitirit
참고 자료로 Demeyer 외의 가치있는 저서 ** 객체 지향적 인 리엔지니어링 패턴 **을 읽어 보시기 바랍니다. al. (레거시 코드 작업자를위한 [무료 전자 서적] (http://scg.unibe.ch/download/oorp/)). 그는 변화의 우선 순위를 매기고 가장 중요한 변화를 우선적으로 그리고 반복적 인 방식으로 작업 할 것을 제안합니다. 따라서, 대답은 프로젝트 시간 상자와 내가 생각하는 우선 순위에 달려있다. –
또한, gcc의 경우, 적어도'-Wall'에서 항상 실행되어야합니다. 나는'-Wextra'를 선호하며 때로는'-pedantic'도 도움이됩니다. –