有没有一种方法可以将C++的long类型大小设置为8个字节(x64)?

5

GCC使用sizeof(long)=8编译程序,而Visual Studio使用sizeof(long)=4。如何在Windows x64上将sizeof(long)设置为8字节?


4
你能否使用std::int64_t代替(来自cstdint)? - Borgleader
如果这很重要,就使用c99类型。 - user3528438
顺便提一下,由于 sizeof 考虑了对齐方式,它实际上并不能精确地指示二进制大小或范围。例如,如果某个实现中 sizeof(long)==8 但是 long 在 2147483647 处溢出,这仍然符合标准行为。 - user3528438
2
你不能这样做。有标准库函数需要使用 long 类型的参数。shortintlong 和(C++11)long long 的大小取决于实现。 - David Hammen
1
@AlekDepler 不是"未定义的",据我所知,如果你在Windows上使用MinGW编译代码,long类型的大小可能是8个字节。 - Borgleader
显示剩余3条评论
2个回答

6
< p > long 的实际大小没有指定为确切的字节数, 只有它必须能够表示的值的范围。但是,您可以使用定宽整数


长整型的实际大小并没有规定为确切的字节数,只规定了其必须能够表示的值的范围。但是,您可以使用定宽整数。
std::int64_t

这些固定宽度的整数类型,连同其他类型,都可以在 <cstdint> 中找到。

好的,我有一个非常大的项目,所以我无法替换所有的代码。 - user2440074
2
@AlekDepler - 你不能做你想做的事情。编写一个脚本来自动化你需要做的事情。 - David Hammen

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接