如何知道是否定义了__uint128_t
我们可以使用预处理器来知道是否定义了unsigned long long
:
#include #ifndef ULLONG_MAX typedef unsigned long t_mask; #else typedef unsigned long long t_mask; #endif
但是如何知道是否定义了__uint128_t?
由于__uint128_t
类型是GCC扩展 ,正确的做法可能是检查一些已知良好版本的GCC。
有关用于版本检查GCC编译器的宏的信息, 请参阅此页面 。
您可以尝试以下方法。 我不知道这有多可靠,但它可能是最简单的方法。
#ifdef __SIZEOF_INT128__ // do some fancy stuff here #else // do some fallback stuff here #endif
我还没有处理__uint128_t,但根据现有的模式用法,我希望如下。
#include #ifndef UINT128MAX #error "__uint128_t not defined" #endif
希望这可以帮助
在/ usr / libexec / gcc树中找到你的cc1,然后查询它:
$ strings /usr/libexec/gcc/x86_64-redhat-linux/4.6.3/cc1 | grep uint128_t __uint128_t(或不)