簡體   English   中英

如何根據long的大小更改sprintf格式字符串

[英]How to change my sprintf format string, based on size of long

我想用printfscanf從十六進制字符串中讀取一些uint64_t值。

並非我使用的所有平台都具有相同的longlong long大小,因此,如果我使用"%llx"之類的格式字符串, "%llx"在長為128位的平台上發出警告,而"%lx"會在平台,長期以來一直是64位(並且更長)。

我的第一個想法是使用宏定義格式字符串,但是宏表達式不支持sizeof。

有沒有一種方法可以定義我的格式字符串,使其可以在任何平台上運行,最好不要發出警告?

uint64_t的格式字符串由宏PRIu64定義

例如:

uint64_t foo = 0;

printf("%" PRIu64 "\n", foo);

scanf存在類似的格式字符串,在這種情況下為SCNu64 這些是<inttypes.h>定義的宏。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM