10

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

4

3 回答 3

7

你需要

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

__int128_t然后通过使用对进行模拟,int64_t就像 64 位整数在 32 位编译时不可用时一样,使用 32 位进行模拟

于 2011-08-24T11:29:20.790 回答
6

我能够使用 Code::Blocks 和默认的 mingw 安装(即 IA32 btw)得到同样的问题,但是,当我安装TDM-MinGW64时,它编译得很好(在将 x64 编译器添加到 C::B 之后)。因此,请确保您的 mingw 构建针对 x64(带有-m64并且它是 mingw 的 x64 构建,以及__uint128_t可选的 x64 ABI 扩展。

但是,您使用的任何 Windows IDE 都不会__int128_t作为关键字,因为它是一个特殊的 GCC 扩展(如前所述)。

于 2011-08-24T11:52:54.793 回答
1

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

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

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

于 2017-01-11T02:14:17.457 回答