現在四章まで読み終わりました。今までやってきて疑問に思っていたことが書かれていて、振り返りにとてもいいです。Jeffrey Richterのコメントがらしいというか、なんというか。

.NETのクラスライブラリ設計 (Microsoft.net Development Series)
- 作者: Krzysztof Cwalina,Bard Abrams,藤原雄介
- 出版社/メーカー: 日経BP社
- 発売日: 2009/12/23
- メディア: 単行本
- 購入: 10人 クリック: 603回
- この商品を含むブログ (34件) を見る
Windows APIの場合は番兵値使うところも構造体内のメンバに限られている…と思うので、構造体のサイズ見て値の挙動を調べたりできるんでしょうけど。
(wingdi.hから引用)
#define DMPAPER_FIRST DMPAPER_LETTER #define DMPAPER_LETTER 1 /* Letter 8 1/2 x 11 in */ (略) #define DMPAPER_PENV_10_ROTATED 118 /* PRC Envelope #10 Rotated 458 x 324 mm */ (略) #if (WINVER >= 0x0500) #define DMPAPER_LAST DMPAPER_PENV_10_ROTATED #elif (WINVER >= 0x0400) #define DMPAPER_LAST DMPAPER_A3_EXTRA_TRANSVERSE #else #define DMPAPER_LAST DMPAPER_FANFOLD_LGL_GERMAN #endif
このDMPAPER_LASTが文中で登場する番兵値。OSのアップグレードなどで上限の値が変わったらこの値も変わっちゃうんだから(実際Windows 2000/NT 4.0以降で変わっています)、こんなのをenumに入れちゃだめだよってことだそうです。