C에서 size_t
유형의 변수를 인쇄하려고하지만 size_t
이 다른 아키텍처의 다른 변수 유형에 앨리어싱되어있는 것처럼 보입니다. 예를 들어, 하나의 시스템에서 (64 비트) 다음 코드는 경고를 던져하지 않습니다플랫폼 독립적 인 size_t 형식 지정자는?
:size_t size = 1; printf("the size is %ld", size);
하지만 내 다른 컴퓨터에 (32 비트) 위의 코드는 다음과 같은 경고 메시지가 생성
경고 : 형식 '% ld 개는' '긴 INT *'하지만, 인수 3 을 입력있다 '를 size_t *'나는이 포인터 크기의 차이로 인해 의심
을 입력 기대에 있도록 내 64 비트 시스템 size_t
은 long int
("%ld"
)이며, 내 32 비트 컴퓨터에서는 size_t
이 다른 유형의 앨리어스입니다.
특별히 size_t
의 형식 지정자가 있습니까?
경고 메시지가 코드와 일치하지 않습니다. 경고는 포인터를 언급하고 코드에는 아무 것도 없습니다. 당신은 어딘가에서'&'를 제거 했습니까? – Jens
포인터? 아니요. 포인터에 대한 경고를 얻지 못했습니다. 실제로 어떤 코드를 실행할 때 어떤 경고가 표시되는지에 따라 오류가 발생합니다. 다음 테스트 코드를 사용해보십시오. #include int main() { size_t size = 1; printf ("크기는 % ld", 크기); return 0; } –
참고 항목 [size_t 유형의 변수에 대한 교차 플랫폼 형식 문자열] (http://stackoverflow.com/questions/174612/cross-platform-format-string-for-variables-of-type-size-t) . – legoscia