Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Mencetak `uint64_t` Menghasilkan Ralat "Spurious Trailing '%' dalam Format"?

Mengapa Mencetak `uint64_t` Menghasilkan Ralat "Spurious Trailing '%' dalam Format"?

Patricia Arquette
Patricia Arquetteasal
2024-11-17 21:21:02810semak imbas

Why Does Printing a `uint64_t` Result in a

Spurious Trailing '%' dalam Ralat Format Semasa Cuba Mencetak uint64_t

Dalam percubaan untuk mencetak pembolehubah uint64_t menggunakan printf, anda boleh menghadapi ralat seperti "%' jejak palsu dalam format." Mari kita mendalami isu ini dan teroka penyelesaian.

Coretan kod yang disediakan mempamerkan percubaan untuk mencetak pembolehubah uint64_t menggunakan pemegang tempat %" PRIu64 ":

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

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

Walau bagaimanapun, kompilasi gagal dengan mesej ralat yang dinyatakan sebelum ini. Untuk menyelesaikan isu ini, anda perlu memastikan bahawa makro yang diperlukan ditakrifkan. Piawaian ISO C99 menentukan bahawa makro PRIu64 hanya ditakrifkan jika diminta secara eksplisit.

Oleh itu, tambahkan baris berikut pada kod anda sebelum menyertakan :

#define __STDC_FORMAT_MACROS

Dengan baris ini ditambah, makro PRIu64 akan ditakrifkan dengan betul dan ralat yang anda hadapi akan diselesaikan. Makro ini membolehkan penggunaan ruang letak PRIu64 dalam rentetan format printf, membolehkan anda berjaya mencetak pembolehubah uint64_t.

Atas ialah kandungan terperinci Mengapa Mencetak `uint64_t` Menghasilkan Ralat "Spurious Trailing '%' dalam Format"?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn