我想要一个128位整数,因为我想存储两个64位数的乘法结果.在gcc 4.4及以上版本中有没有这样的东西?
作为扩展,整数标量类型
__int128支持具有足够容纳128位的整数模式的目标.只需写入__int128带符号的128位整数,或写入unsigned __int128无符号的128位整数.GCC中不支持表示
__int128长整数小于128位宽的目标的类型的整数常量.
我想知道什么gcc版本增加了对这种类型的支持,或者如果有,可以直接用来测试其存在的宏.
我正在开发一个C/C++网络项目,它应该能够使用IPv4和IPv6网络堆栈.该项目仅适用于Linux.因此,我试图找到一种有效的方法来存储IP地址并区分协议系列.第一种方法是建立一个联盟:
struct ip_addr {
uint8_t fam; // socket family type
union {
struct in_addr ipv4_sin_addr;
struct in6_addr ipv6_sin_addr;
}addr;
};
Run Code Online (Sandbox Code Playgroud)
第二种方法是typedef std::vector<unsigned char> IPAddressNumber在向量的字节数之后定义a 并产生差异.
第三种方法是使用gcc中的int128_t/uint128_t或__int128_t.
对于最后一种情况,我想知道哪些版本的GCC支持这些类型,适用于哪些平台(尤其是IA-32/IA-64)以及是否存在任何已知错误.此外,上述哪种解决方案可能是最方便的解决方案?