ฉันต้องการพิมพ์ตัวแปรประเภทsize_t
C แต่ปรากฏว่าsize_t
มีการใช้นามแฝงเป็นตัวแปรประเภทต่างๆในสถาปัตยกรรมที่แตกต่างกัน ตัวอย่างเช่นในเครื่องเดียว (64 บิต) รหัสต่อไปนี้จะไม่แสดงคำเตือนใด ๆ :
size_t size = 1;
printf("the size is %ld", size);
แต่ในเครื่องอื่นของฉัน (32 บิต) รหัสด้านบนจะสร้างข้อความเตือนต่อไปนี้:
คำเตือน: รูปแบบ '% ld' คาดว่าจะเป็นประเภท 'long int *' แต่อาร์กิวเมนต์ 3 มีประเภท 'size_t *'
ฉันสงสัยว่านี่เป็นเพราะความแตกต่างของขนาดตัวชี้ดังนั้นบนเครื่อง 64 บิตของฉันsize_t
จึงมีนามแฝงเป็น a long int
( "%ld"
) ในขณะที่เครื่อง 32 บิตของฉันsize_t
มีนามแฝงเป็นประเภทอื่น
มีตัวระบุรูปแบบสำหรับsize_t
หรือไม่
&
หรือไม่?