나는 방금 C4244 경고 (데이터 손실 가능성)가 표시되지 않는다는 것을 발견했습니다. 나는 강력하게 의심스러운 MS 헤더가이 경고를 억제하고 헤더를 포함하는 모든 번역 단위에 대해 표시하지 않는 것으로 의심하지만 무수한 헤더가 잘못되었을 수 있음을 확인하지 못했습니다.VC++ 컴파일러 : 현재 경고 수준을 결정하거나 재정의하는 방법은 무엇입니까?
다른 프로그래밍 문제와 마찬가지로 이진 검색을 수행하여 현재의 경고 수준을 인쇄하고 가능한 경우 기본 Pre Compiled Header의 경고가 표시되지 않도록하고 싶습니다.
누구에게 어떤 컴파일러 지시문을 사용할 수 있는지, 또는 내가 취할 수있는 접근 방법이 그 정보를 제공 할 수 있는지 알고 있습니까?
발신자가 계약을 위반하고 서명 된 바이트 대신 정수를 보내려고 할 때 컴파일러 경고를 내 헤더에서 작성한 타입 선언이 실패하고 있다는 것을 얼마나 불쾌한지 말할 수 없습니다. 내가 해결하려고하는 현재의 버그로 이끌었다).
생각하십니까?
참고 : (기본값 : XXXX)의 #pragma 경고 다음 : (XXXX 해제) 내 전체 솔루션을 통해의 #pragma에
검색은 경고의 #pragma의 균형 선언을 마련. 그리고 그 중 아무 것도 참조 4244.
전체 솔루션에서 4244의 검색은 일치하는 항목을 반환하지 않습니다. (경고를 무시하거나 포함 된 라이브러리, 하위 프로젝트 등을 수행하지 않습니다.)
전체 MS 경로를 포함하는 4244의 검색 경로는 몇 가지 참조를 반환합니다. 은이 호출되기 전에 설정된 #define 심볼에 따라 균형을 이루거나 거의 일치합니다. 따라서 MS가 잘못되었다는 의심이 들었습니다. (MS가 자신의 헤더에 부적절한 작업을하는 이전의 역사와 함께)
해당 구문은 VS 2008에서 거부됩니다. 특정 경고를 기본값으로 재설정하려고합니다. #pragma warning (기본값 : 4244)을 사용해야합니다. 4244 : C : \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ VC \ include \ comdef와 관련된 유일한 헤더는 어디서나 찾을 수 있습니다. (74) : #pragma warning (disable : 4244) : C : \ Program Files (x86) C : \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ VC \ atlmfc \ include \ atldbcli.h (38) : #pragma warning (해제 : 4244) – Mordachai