programing

uint64_t 인쇄 방법?오류: "허위 후행 '%' 형식"

prostudy 2022. 5. 23. 21:30
반응형

uint64_t 인쇄 방법?오류: "허위 후행 '%' 형식"

printf uint64_t의 매우 간단한 테스트 코드를 작성했다.

#include <inttypes.h>
#include <stdio.h>

int main()
{
  uint64_t ui64 = 90;
  printf("test uint64_t : %" PRIu64 "\n", ui64);
  return 0;
}

나는 그것을 컴파일하기 위해 ubuntu 11.10 (64 비트)과 gcc 버전 4.6.1을 사용하지만, 실패하였다.

main.cpp: In function ‘int main()’:
main.cpp:9:30: error: expected ‘)’ before ‘PRIu64’
main.cpp:9:47: warning: spurious trailing ‘%’ in format [-Wformat]

ISO C99 표준은 이러한 매크로가 명시적으로 요청된 경우에만 정의되어야 한다고 명시한다.

#define __STDC_FORMAT_MACROS
#include <inttypes.h>

... now PRIu64 will work

센토스 5.x에 따라 memcached를 편찬할 때 나도 같은 문제를 얻었다.

gcc와 g+++를 최소한 버전 4.4로 업그레이드하는 게 해법이다.

컴파일하기 전에 CC/CXX가 오른쪽 이진 파일로 설정(내보내기)되었는지 확인하십시오.

C++ 태그를 포함했으므로 {fmt} 라이브러리를 사용하여 해당 라이브러리를 사용하지 마십시오.PRIu64매크로 등printf모두 합쳐서 다음과 같은 문제:

#include <fmt/core.h>

int main() {
  uint64_t ui64 = 90;
  fmt::print("test uint64_t : {}\n", ui64);
}

C++20: P0645의 표준화를 위해 이 라이브러리에 기반한 서식설비를 제안한다.

고지 사항:{fmt}의 저자다.

참조URL: https://stackoverflow.com/questions/8132399/how-to-printf-uint64-t-fails-with-spurious-trailing-in-format

반응형