ひょんな事から、<limits.h>を見てました。
このヘッダーには、たまーに使う INT_MIN、ULONG_MAX とか _I64_MIN など、型の上限値やら下限値やらが定義されています。
そんな中発見したのですが… (自動改行が発生してたら、脳内補完してください^^;)
↓↓
#if _INTEGRAL_MAX_BITS >= 128
/* minimum signed 128 bit value */
#define _I128_MIN (-170141183460469231731687303715884105727i128 - 1)
/* maximum signed 128 bit value */
#define _I128_MAX 170141183460469231731687303715884105727i128
/* maximum unsigned 128 bit value */
#define _UI128_MAX 0xffffffffffffffffffffffffffffffffui128
#endif
でかっ!!!
128bitの上限下限がすでに定義されていたとは…。
しかし、_UI128_MAX の定義よ。f 並びすぎやぁぁぁaaaaaaaaaaaaaaaaaa!! (ちょっと対抗してみた)
…あれー?でもそしたら、128bit型ってのが使えるの? というわけで、早速実験してみました。 "__int128" 型 と、サフィックス "i128"。(VC7.1)
■ __int128 型
error C4235: 非標準の拡張機能が使用されています : '__int128' キーワードはこのプロダクトではサポートされていません。■ i128 サフィックス
error C2059: 構文エラー : 'サフィックスが無効です。'
error C2146: 構文エラー : ';' が、識別子 'i128' の前に必要です。
コンパイルエラーになりましたが、"__int128型" ってのは予約はされてるようですね。 無意味に時代の流れを感じますわー。
しかし、64bitコンパイラだったら通るんでしょうかねぇ…