에서 size_t로는 코드의 다음 코드가 있다고 가정 :를 인쇄 OS에 독립적 인 아키텍처 독립적 인 방법
include <stdio.h>
size_t nodeID = 5;
printf("nodeID = %lu", nodeID);
이 경고없이 실행은 64 비트 시스템에서 제기되고를하지만 %를 변환 경고를 생성합니다 32 비트 시스템에서 루.
우리는 그러나이가 "I"수정을 사용하여 비주얼 스튜디오에서 작동하지 않는 %z modifier
를 사용하여 처리 할 수 있습니다.
아키텍처 독립적이며 OS 독립적 인 방식으로이 문제를 해결할 수있는 방법이 있습니까? 당신이 IIRC이 오래된 MS 컴파일러와의 호환성 문제가 발생할 수 말한대로하지만
#include <stdio.h>
size_t nodeID = 5;
printf("nodeID = %zu\n", nodeID);
: 당신이 말하는 것처럼
'nodeID'가 모든 CPU 환경에서 동일한 크기를 갖는 것이 더 좋지 않을까요? 'uint64_t' 또는'uint32_t'라고 선언하면 x86 및 x64에서 다르게 실행되는 것을 원하지 않으면 프로그램이 동작을 변경하지 않습니다. –
10 분할로 나만의 인쇄 방법을 쓸 수 있습니다. –
''% zu ''형식은 표준적이고 독립적 인 방식으로되어 있습니다. 불행히도 Visual Studio C 컴파일러는 다음 표준을 오랫동안 건너 뛰어야합니다. 마지막 몇 가지 릴리스 (2013 및 2015)에는 전체 C99 호환성이 있어야합니다. –