ひさびさの日記

あー,さぼっちゃてました.
英語も,机にむかってやる,というのは,やっていませんでした.
ま,彼女の家にいったり,髪きったり,体組成計買ったり,秋葉原で,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 になるのか
わからんどす.


わかる人,教えくださいです.