如何在任何 arch 上强制将 long 的大小设置为 8 字节?

问题描述 投票:0回答:1

我希望我的 long 为 8 个字节,无论我是在 32 位模式还是 64 位模式下编译。我正在使用 MSVC,目前我不太关心跨平台性。我尝试做类似的事情

#define long __int64

typedef __int64 long;

但是第一个会导致其他文件中出现大量编译错误,而第二个似乎编译器本身无法接受。

64-bit typedef long-integer sizeof
1个回答
0
投票

我不会更改保留类型的默认行为。更好的做法是创建一种新类型(如果您喜欢并使用它)。

考虑一下当你包含thirdPartyLib并且它的“h”文件有类似的东西时的情况:

void func1(long number);

当您的代码包含“h”文件时,它会将“number”参数视为64位,但是当lib的原始“c”文件包含“h”时,它会认为“number”是32位。这会导致联动阶段出现问题。

© www.soinside.com 2019 - 2024. All rights reserved.