size_t의 올바른 printf 형식 지정자: %zu 또는 %Iu?
의 값을 출력하고 싶다.size_t
변수 사용printf
C++에서 Microsoft Visual Studio 2010을 사용하여 (사용하고 싶다)printf
대신<<
이 특정 코드 조각에서, 그러니 제발 내가 이 코드를 사용해야 한다고 말하지 말아주세요.<<
대신).
우편에 의하면
플랫폼에 의존하지 않는 올바른 방법은%zu
Visual Studio에서는 동작하지 않는 것 같습니다.Visual Studio 매뉴얼:
http://msdn.microsoft.com/en-us/library/vstudio/tcxf1dw6.aspx
내가 꼭 사용해야 한다고 말한다.%Iu
(대문자 사용)i
(소문자가 아님)l
).
Microsoft는 이 기준을 준수하고 있지 않습니까?아니면 C99 이후로 기준이 변경되었습니까?아니면 C와 C++의 기준이 다른가요? (제가 보기엔 매우 낯설어요.)
MS Visual Studio는 지원하지 않았습니다.%zu
printf 지정자 이전VS2013
. VS2013부터 (예:_MSC_VER
>=1800
)%zu
사용할 수 있습니다.
또는 이전 버전의 Visual Studio에서 작은 값(예: std 컨테이너의 요소 수)을 인쇄하는 경우 간단히 캐스트할 수 있습니다.int
및 사용%d
:
printf("count: %d\n", (int)str.size()); // less digital ink spent
// or:
printf("count: %u\n", (unsigned)str.size());
여기서 나온 답을 보면%z
C99 추가입니다.MSVC는 최신 C규격을 지원하지 않기 때문에%z
지원되지 않습니다.
Microsoft의 C 컴파일러는 최신 C 표준을 따르지 않습니다.기본적으로 C99에서 선택한 기능을 갖춘 C89 컴파일러입니다(예:long long
이 때문에, 서포트되고 있지 않은 것은 당연합니다(%zu
C99)에 기재되어 있습니다.
Microsoft 의 메뉴얼에는, 다음과 같이 기술되어 있습니다.
그
hh
,j
,z
,그리고.t
길이 프리픽스는 지원되지 않습니다.
그렇기 때문에%zu
는 지원되지 않습니다.
또, 사용하는 올바른 프리픽스가size_t
는I
– 를 사용할 수 있습니다.%Iu
.
언급URL : https://stackoverflow.com/questions/15610053/correct-printf-format-specifier-for-size-t-zu-or-iu
'programing' 카테고리의 다른 글
스택 트레이스를 인쇄하기 위해 내부 프로그램에서 gdb를 호출하는 가장 좋은 방법? (0) | 2022.08.29 |
---|---|
C에서 0을 선두로 하는 인쇄 (0) | 2022.08.29 |
타이프스크립트:VueX 스토어 모듈을 참조하면 VueJs 2.5에 대한 네임스페이스 오류가 표시됨 (0) | 2022.08.29 |
농담으로 vue 합성 함수를 조롱하는 방법 (0) | 2022.08.29 |
VueX: 중첩된 객체를 사용하여 스토어를 구성하는 방법 (0) | 2022.08.29 |