mingw gcc 上的 __uint128_t

发布于 2024-12-01 01:42:06 字数 234 浏览 4 评论 0原文

我正在尝试在 mingw gcc 下编译 ac 程序。该程序使用 __uint128_t 整数。当我尝试在同一台 64 位机器上的标准 ubuntu gcc 下编译它时,它完美地工作了。但是,当我尝试在 mingw 下为 Windows 编译它时,它甚至无法识别 __uint128_t 关键字。这意味着什么? mingw下没有128位整数吗? 如果没有,是否有任何具有本机(和快速)128 位整数的 Windows 编程语言?

I'm trying to compile a c program under mingw gcc. This program is using an __uint128_t integer. When I try to compile it under the standard ubuntu gcc on the same 64-bit machine, it perfectly works. But then, when I try to compile it for windows under mingw, it simply doesn't even recognize the __uint128_t keyword. What does this mean? There aren't 128 bit integers under mingw?
If not, is there any programming language for windows which has native (and FAST) 128 bit integers?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

GRAY°灰色天空 2024-12-08 01:42:06

您需要

  • 一个相对较新版本的 gcc,
  • 使用本机 64 位整数支持 __int128_t 编译的版本

,然后使用 int64_t 对进行模拟,其方式与模拟 64 位整数相同32 位(如果它们在 32 位编译上不可用)

You need

  • a relatively recent version of gcc
  • a version compiled with native 64 bit integer support

__int128_t is then emulated by using pairs of int64_t in the same way as 64bit integers are emulated with 32bit if they are not available on 32bit compiles

栀子花开つ 2024-12-08 01:42:06

我能够使用 Code::Blocks 和默认的 mingw 安装(顺便说一句,IA32)遇到同样的问题,但是,当我安装 TDM 时-MinGW64,它编译得很好(在将 x64 编译器添加到 C::B 后)。因此,请确保您的 mingw 构建面向 x64(使用 -m64并且它是 mingw 的 x64 构建,因为 __uint128_t 是可选的 x64 ABI 扩展。

无论您使用什么 Windows IDE,都不会选择 __int128_t 作为关键字,因为它是一个特殊的 GCC 扩展(如上所述)。

I was able to get the same problem using Code::Blocks and the default mingw install (which is IA32 btw), however, when I installed TDM-MinGW64, it compiled fine (after adding the x64 compiler to C::B). So make sure your mingw build is targeting x64 (with -m64) and it is an x64 build of mingw, as __uint128_t is an optional x64 ABI extension.

whatever windows IDE you are using won't pick up __int128_t as a keyword though, as its a special GCC extension (as mentioned).

删除→记忆 2024-12-08 01:42:06

但是,当我尝试在 mingw 下为 Windows 编译它时,它甚至无法识别 __uint128_t 关键字。这意味着什么? mingw下没有128位整数吗?

执行 gcc -dM -E - /dev/null | grep INT128。如果它输出宏#define __SIZEOF_INT128__ 16,则__uint128_t可用。如果它不输出宏或者小于 16,则 __uint128_t 不可用。

另请参阅 128 位整数 - 无意义的文档?在 GCC 用户邮件列表上。

But then, when I try to compile it for windows under mingw, it simply doesn't even recognize the __uint128_t keyword. What does this mean? There aren't 128 bit integers under mingw?

Perform gcc -dM -E - < /dev/null | grep INT128. If it output the macro #define __SIZEOF_INT128__ 16, then __uint128_t is available. If it does not output the macro or its less than 16, then __uint128_t is not available.

Also see 128-bit integer - nonsensical documentation? on the GCC users mailing list.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文