如何知道是否定义了__uint128_t

Dav*_*eri 12 c c-preprocessor 128-bit

我们可以使用预处理器来知道是否unsigned long long定义了:

#include <limits.h>

#ifndef ULLONG_MAX
typedef unsigned long t_mask; 
#else
typedef unsigned long long t_mask;
#endif
Run Code Online (Sandbox Code Playgroud)

但是如何知道如何__uint128_t定义?

fir*_*exx 12

您可以尝试以下方法.我不知道这有多可靠,但它可能是最简单的方法.

#ifdef __SIZEOF_INT128__
    // do some fancy stuff here
#else
    // do some fallback stuff here
#endif
Run Code Online (Sandbox Code Playgroud)

  • 这就是Linux内核的功能,请参见include / linux / math64.h。 (2认同)