我想在gcc的帮助下编写一个c程序。此程序使用的是__uint128_t整数。当我试图在同一台64位的机器上用标准的ubuntu gcc编译它时,它完美地工作了。但是,当我试图将它编译为在mingw下的windows时,它根本不识别__uint128_t关键字。这是什么意思?下面没有128位整数吗?如果没有,是否有适用于具有本机(和快速) 128位整数的windows的编程语言?
发布于 2011-08-24 11:29:20
你需要
然后,使用对__int128_t对int64_t进行仿真,如果64位整数在32位编译中不可用,则用32位进行仿真。
发布于 2011-08-24 11:52:54
使用代码::块和默认的混合安装(也就是IA32 btw),我可以得到同样的问题,但是,当我安装TDM-MinGW64 64时,它编译得很好(在将x64编译器添加到C::B之后)。因此,确保您的混合构建是针对x64 (使用-m64)的,并且它是mingw的x64构建,因为__uint128_t是一个可选的x64 ABI扩展。
不管您使用的是什么windows,都不会将__int128_t作为关键字,因为它是一个特殊的GCC扩展(如前所述)。
发布于 2017-01-11 02:14:17
但是,当我试图将它编译为在mingw下的windows时,它根本不识别__uint128_t关键字。这是什么意思?下面没有128位整数吗?
执行gcc -dM -E - < /dev/null | grep INT128。如果它输出宏#define __SIZEOF_INT128__ 16,那么__uint128_t是可用的。如果它未输出宏或其小于16,则__uint128_t不可用。
请参阅GCC用户邮件列表上的128位整数-无意义的文档?。
https://stackoverflow.com/questions/7174419
复制相似问题