ひさびさの日記
あー,さぼっちゃてました.
英語も,机にむかってやる,というのは,やっていませんでした.
ま,彼女の家にいったり,髪きったり,体組成計買ったり,秋葉原で,CPUクーラー(ANDY)
を買うのに付きあったり.
あと,体組成計での測定結果とか.
ま,このへんは,のちのち書きます.
バイト中やる気皆無だったので,cut のソースコードを読んでました.
へっぽこな私なので,全然すすまないです...
ま,それはおいといて,マクロで意味不明なところがあったので,
誰かが教えてくれるのを期待して,書いておきます.
coreutils-5.97/src/system.h から抜粋.
#define DECIMAL_DIGIT_ACCUMULATE(Accum, Digit_val, Type) \ ( \ (void) (&(Accum) == (Type *) NULL), /* The type matches. */ \ verify_expr (! TYPE_SIGNED (Type)), /* The type is unsigned. */ \ verify_expr (sizeof (Accum) == sizeof (Type)), /* Added check. */ \ (((Type) -1 / 10 < (Accum) \ || (Type) ((Accum) * 10 + (Digit_val)) < (Accum)) \ ? false : (((Accum) = (Accum) * 10 + (Digit_val)), true)) \ )
verify_expr マクロは,引数の式が,偽の場合,コンパイル時にエラーとなるのは,
わかりました.
問題は,1つ目の式.
どう考えても,常に偽だと思うんだけど...
これって,アドレスを比較しているんだよね?
なので,どうして,コメントにあるように,the type matches になるのか
わからんどす.
わかる人,教えくださいです.