格式说明符 32 位 - 64 位

Format specifier 32 bit - 64 bit

我正在使用 Visual Studio 2015 在 32 位平台和 64 位平台上构建项目。

Sizeof returns 在 32 位平台上是一个 unsigned int,在 64 位平台上是一个 unsigned __int64。

我有以下代码:

printf ("limit is %u. \n",sizeof(var));

我需要在两个平台上编译相同的代码。使用格式说明符 %u 在 64 位中给出警告,使用 %I64u 在 32 位中给出警告。有没有办法在两个平台上使用格式说明符而无需编写 printf 2 次(使用 ifdef _WIN32)。我的项目中有很多这样的警告。这将是很多工作,而且看起来不合适 'clean'。

sizeof 类型 size_t

使用 %zu 作为该类型的格式说明符。它保证适用于所有平台。