gpt4 book ai didi

c++ - Windows 和 Linux 的 C++ 中 64 位整数的跨平台定义

转载 作者:可可西里 更新时间:2023-11-01 17:22:48 26 4
gpt4 key购买 nike

我正在尝试用 C++ 为 Windows(MinGW) 和 Linux(g++) 编写跨平台代码。我曾经在 Linux 中将 64 位整数定义为“长”,但是当我转移到 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

2.-我应该在 MinGW 中使用“long long”还是“__INT64”?为什么?

最佳答案

您可以使用 int64_t 类型,它在 header cstdint 中定义。这是 C++11 的标准。

请注意,如果您使用的平台不支持 64 位整数,则此类型可能不存在。

至于long long,那是另一种可能。 long long 至少为 64 位宽。请注意,它也是 C++11 的标准,即使在使用 C++03 时它可以在多个编译器上工作。

如 Pete Becker 所述,您可以使用 int_least64_t。如果您不介意使用恰好 64 位整数,但使用某种至少 64 位宽的整数类型,这是一个不错的选择。

关于c++ - Windows 和 Linux 的 C++ 中 64 位整数的跨平台定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15908789/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com