我有一个函数foo(unsigned __int128)。如何将unsigned __int128类型的文字传递给函数?我的尝试:
foo(0xFFFFFFFFFFFFFF23FFFFF); //Truncated (expected)
foo(0xFFFFFFFFFFFFFFF01FFFu); //Truncated (expected)
foo(0xFFFFFFFFFFFFFFF23FFFFull); //Truncated
foo((unsigned __int128)0xFF45FFFFFFFFFFFFFFFFFull); //Truncated如您所见,它们都被截断。我怎么才能告诉GCC,文字就是unsigned __int128?
编辑: gcc手册说:
GCC不支持对长整数小于128位的目标表示__int128类型的整数常数。
这是否意味着,我不能编写类型(无符号) __int128的文字?
还有其他选择吗?
发布于 2020-08-09 18:58:17
来自https://gcc.gnu.org/onlinedocs/gcc/_005f_005fint128.html
6.9位整数
作为扩展,整数标量类型__int128被支持用于具有足以容纳128位的整数模式的目标。只需为有符号的128位整数编写__int128,或为无符号的128位整数编写无符号的__int128 .GCC不支持对长整数小于128位的目标表示__int128型整数常数。
所以,不,您不能有文字128位常量。
https://stackoverflow.com/questions/63328802
复制相似问题