ฉันต้องการพิมพ์ตัวแปรประเภทsize_tC แต่ปรากฏว่า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หรือไม่
&หรือไม่?