【发布时间】:2013-11-29 02:41:46
【问题描述】:
在网上搜索后,我发现(如果我错了,请纠正我)在 Windows 编译器上,int 和 long 都是 32 位长,但在大多数 Linux 编译器上,int 是 32 位,而 long 是 64 位。
如果我在 Linux 上使用 GCC 来制作 Windows 可执行文件,当我在 Windows 上运行它时,longs 仍然是 64 位长还是只有 32 位长?如果不是,我如何在所有架构/操作系统/编译器上强制 long 为 64 位长?
另外,如果我使用 32 位 GCC 或编译为 32 位架构,long 仍然是 64 位还是会变成 32 位?
【问题讨论】:
-
"Windows 编译器,整数和长整数都是 32 位长,但在大多数 Linux 编译器上,整数是 32 位,长整数是 64 位。"实际上,这取决于您使用的 Windows 编译器。 msvc 带有 32 位和 64 位编译器。尝试 64 位版本并更新您的帖子。
-
@thang 即使在 MSVC 上使用 64 位编译,
long类型也是 32 位。 -
@MarkRansom,我不明白你这么说的目的。我是否说过 64 位 MSVC 使用 64 位长字节?我一定是错过了什么......
-
@thang,是的,这正是我以为你在说的。即使现在重新阅读它,我也不知道如何以不同的方式解释它。您似乎说 MSVC 中
long的大小取决于您是在进行 32 位还是 64 位构建。 -
@MarkRansom,重新阅读它...你能找到我所说的确切陈述吗?我从来没有说过 long 的大小。
标签: c++