我使用Visual Studio 2015在32位平台和64位平台上构建项目。
Sizeof返回32位平台中的unsigned int和64位平台中的unsigned __int64。
我有以下代码:
printf ("limit is %u. \n",sizeof(var));
我需要在两个平台上编译相同的代码。使用格式说明符%u在64位中发出警告,使用%I64u以32位发出警告。有没有办法在两个平台上使用一个formatspecifier,而无需编写printf 2次(使用ifdef _WIN32)。我的项目中有很多这些警告。这将是一项很多工作,看起来不干净。
答案 0 :(得分:4)
sizeof
的类型是size_t
。
使用%zu
作为该类型的格式说明符。它保证为所有平台定义良好。