GCC使用sizeof(long)=8
编译程序,而Visual Studio使用sizeof(long)=4
。如何在Windows x64上将sizeof(long)设置为8字节?
GCC使用sizeof(long)=8
编译程序,而Visual Studio使用sizeof(long)=4
。如何在Windows x64上将sizeof(long)设置为8字节?
long
的实际大小没有指定为确切的字节数, 只有它必须能够表示的值的范围。但是,您可以使用定宽整数 std::int64_t
<cstdint>
中找到。这是一个常见的迁移问题:https://msdn.microsoft.com/en-us/library/3b2e7499.aspx。正如之前所说,规范并没有明确说明 long 的大小,有些平台是 4,而有些则是 8。
std::int64_t
代替(来自cstdint)? - Borgleadersizeof
考虑了对齐方式,它实际上并不能精确地指示二进制大小或范围。例如,如果某个实现中sizeof(long)==8
但是long
在 2147483647 处溢出,这仍然符合标准行为。 - user3528438long
类型的参数。short
、int
、long
和(C++11)long long
的大小取决于实现。 - David Hammen