我正在尝试在mingw gcc下编译一个c程序。该程序使用__uint128_t
整数。当我尝试在同一个64位机器上使用标准的ubuntu gcc编译它时,它完全有效。但是,当我尝试在mingw下为windows编译它时,它甚至根本不识别__uint128_t
关键字。这是什么意思? mingw下没有128位整数?
如果没有,是否有任何编程语言的Windows具有本机(和FAST)128位整数?
答案 0 :(得分:5)
你需要
__int128_t
然后使用int64_t
对进行仿真,就像64位整数用32位仿真一样,如果它们在32位编译中不可用
答案 1 :(得分:5)
我能够使用Code :: Blocks和默认的mingw安装(这是IA32顺便说一句)得到同样的问题,但是,当我安装TDM-MinGW64时,它编译得很好(在将x64编译器添加到C之后) :: B)。因此,请确保您的mingw构建定位到x64(使用-m64
)和它是mingw的x64版本,因为__uint128_t
是可选的x64 ABI扩展。
你使用的任何Windows IDE都不会选择__int128_t
作为关键字,因为它是一个特殊的GCC扩展(如上所述)。
答案 2 :(得分:1)
但是,当我尝试在mingw下为windows编译它时,它甚至无法识别__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?。