Jai*_*tes 8 c++ cross-platform mingw int64 long-integer
我正在尝试用C++ for Windows(MinGW)和Linux(g ++)编写跨平台代码.我习惯在Linux中将64位整数定义为"long",但当我移动到MinGW时,sizeof(long)返回4个字节.然后我发现我可以使用"long long"或"__INT64"在MinGW中定义64位整数.我有两个问题:
1.-为Windows和Linux定义64位整数的最便携方式是什么?我目前正在使用#ifdef,但我不知道这是否是最好的方法:
#ifdef LINUX
#define INT64 long
#elif WIN32
#define INT64 long long
#endif
Run Code Online (Sandbox Code Playgroud)
2.- 我应该在MinGW中使用"long long"还是"__INT64"?为什么?
mfo*_*ini 14
您可以使用int64_t标头中定义的类型cstdint.这是C++ 11的标准.
请注意,如果您使用的平台不支持64位整数,则此类型可能不存在.
至于long long,这是另一种可能性.long longs至少为64位宽.请注意,它也是C++ 11的标准版,即使它在使用C++ 03时可以在多个编译器上运行.
正如Pete Becker所提到的,你可以使用int_least64_t.如果您不介意使用完全64位整数,但这是一个至少 64位宽的整数类型,这是一个不错的选择.
| 归档时间: |
|
| 查看次数: |
6416 次 |
| 最近记录: |