다음을 인쇄하는 C ++ 코드가 있습니다 size_t
.
size_t a;
printf("%lu", a);
32 비트 및 64 비트 아키텍처 모두에서 경고없이 컴파일하고 싶습니다.
이것이 C99라면 printf("%z", a);
. 그러나 AFAICT %z
는 표준 C ++ 방언에는 존재하지 않습니다. 그래서 대신에
printf("%lu", (unsigned long) a);
정말 추합니다.
size_t
언어에 내장 된 s 를 인쇄 할 수있는 기능이 없다면 size_t
, 좋은 것을 유지하면서 가짜 컴파일러 경고를 제거하기 위해 s에 적절한 캐스트를 삽입 할 printf 래퍼를 작성하는 것이 가능한지 궁금 합니다.
어떤 아이디어?
편집 내가 printf를 사용하는 이유를 명확히하기 위해 : 나는 정리하고있는 비교적 큰 코드베이스를 가지고 있습니다. printf 래퍼를 사용하여 "경고를 작성하고, 파일에 기록하고, 오류와 함께 코드를 종료"와 같은 작업을 수행합니다. cout 래퍼로이 작업을 수행하기에 충분한 C ++-foo를 수집 할 수 있지만 컴파일러 경고를 제거하기 위해 프로그램의 모든 warn () 호출을 변경하는 것은 아닙니다.