Nic*_*mer 5 c++ types preprocessor-directive
uint64_t不保证在32位平台上定义类型,并且代码类似
int main() {
uint64_t i = 0;
}
Run Code Online (Sandbox Code Playgroud)
可能会导致类型的编译错误incomplete type.
是否有预处理程序指令来检查是否uint64_t存在?检查类型是否已定义的任何其他方式?
我认为合理的方法是检查是否UINT64_MAX定义了相关的宏,例如
#include <cstdint> /* don't forget to include */
...
#ifdef UINT64_MAX
...
#endif
Run Code Online (Sandbox Code Playgroud)
如果定义了某种类型的同义词,您无法直接检查AFAIK.根据C99,7.18.2指定宽度整数类型的限制(没有C++标准的副本来确认,强调我的):
以下类似对象的宏指定类型的最低和最高限额宣布在
<stdint.h>.每个宏名称对应于7.18.1中的类似类型名称.