13

unsigned long longが定義されているかどうかを知るために、プリプロセッサを使用できます。

#include <limits.h>

#ifndef ULLONG_MAX
typedef unsigned long t_mask; 
#else
typedef unsigned long long t_mask;
#endif

しかし、__uint128_tが定義されているかどうかを知る方法は?

4

4 に答える 4

16

以下を試すことができます。これがどれほど信頼できるかはわかりませんが、これが最も簡単な方法かもしれません。

#ifdef __SIZEOF_INT128__
    // do some fancy stuff here
#else
    // do some fallback stuff here
#endif
于 2014-06-01T14:42:24.123 に答える
4

私はまだ __uint128_t を扱っていませんが、既存のパターンの使用法に基づいて、次のことが予想されます。

#include <stdint.h>

#ifndef UINT128MAX
    #error "__uint128_t not defined"
#endif

お役に立てれば

于 2013-08-30T12:14:45.340 に答える
3

/usr/libexec/gcc ツリーで cc1 を見つけて、問い合わせます。

$ 文字列 /usr/libexec/gcc/x86_64-redhat-linux/4.6.3/cc1 | grep uint128_t
__uint128_t (またはそうでない)
于 2016-05-09T02:04:24.543 に答える