2011-08-24 122 views
7

我想要编译MinGW的下一个gcc的C程序。该程序正在使用一个整数__uint128_t。当我尝试在同一个64位机器上的标准ubuntu gcc下编译它时,它完美的工作。但是,当我尝试在mingw下编译windows时,它甚至不会识别__uint128_t关键字。这是什么意思? mingw下没有128位整数? 如果没有,是否有任何编程语言,用于窗户,具有天然的(和FAST)128个的整数?__uint128_t上MinGW的GCC

+0

执行'gcc -dM -E - jww

回答

5

你需要

  • GCC的一个相对较新的版本
  • 与原生64位整数支持编译版本

__int128_t然后通过方法一样使用双int64_t仿真64位整数与32位模拟的,如果他们无法在32位编译

5

我能得到使用代码::块和默认MinGW的安装(这是IA32 BTW)同样的问题,但是,当我安装TDM-MinGW64,它编译罚款(加上64位编译器到C :: B之后)。因此,请确保您的MinGW构建的目标是64位(与-m64它的MinGW的64位版本,因为__uint128_t是一个可选的64位ABI扩展。

任何窗口IDE使用的是不会拿起__int128_t作为关键字虽然,因为其特殊的GCC扩展(如前所述)。

0

但是,当我尝试编译windows下的mingw时,它甚至不能识别__uint128_t关键字。这是什么意思? mingw下没有128位整数?

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

另请参阅GCC用户邮件列表上的128-bit integer - nonsensical documentation?