ABライブラリソースから統計風に数値データを取ってみました。
○個引数を持つ関数はどれだけあるかというグラフです。
0: 227 ==================== 1: 510 ============================================== 2: 721 ================================================================= 3: 422 ====================================== 4: 255 ======================= 5: 144 ============= 6: 59 ===== 7: 28 == 8: 24 == 9: 13 = 10: 9 11: 5 12: 4 13: 2 14: 1
これは、引数が0個の関数が227個あるという風に読み取ってください。最多は引数2個の721関数です。それにしても一番多い14個も引数がある関数とはいったい何者でしょう。
それはずばりCreateFontです。割と有名な関数だったのが意外に思いました。
もう1つ、今度は構造体のメンバの数を同じようにグラフにします。クラスは対象外です。
0: 4 = 1: 87 ============================= 2: 144 ================================================ 3: 102 ================================== 4: 54 ================== 5: 57 =================== 6: 54 ================== 7: 37 ============ 8: 25 ======== 9: 23 ======= 10: 14 ==== 11: 12 ==== 12: 8 == 13: 7 == 14: 8 == 15: 8 == 16: 4 = 18: 5 = 19: 3 = 20: 9 === 21: 1 24: 3 = 25: 2 26: 1 28: 1 29: 1 30: 2 31: 1 34: 2 51: 1
さすがに関数の引数のときより散らばっています。メンバ2個が最多というのが意外でした。というのももう少し多い3-4個が最多と予想していたからです。しかし、分散は間違いなく多いほうへ移っていると見えます。
なお、最多だった51メンバの構造体はIMAGE_VXD_HEADERです。残念ながらMSDNライブラリを探しても出てきません。GoogleではWineのヘッダが上位に出てくる始末です。VxDは16ビットから9xまでのデバイスドライバですから、それに関連しているであろう型が今となって必要になる機会もないというのも過言ではないのかもしれません。
結果を見ていて面白かったのでおそらく続けます。少なくとも舞台裏の回が次回以降に出てきます。リクエストもどうぞ。
スポンサード リンク |
この記事のカテゴリ
- AB ⇒ 数値で見る現ABライブラリソース (1) たぶんイントロダクション
メンバ数が 0 の構造体も定義されているのは初めて知りました。C言語では禁止されていたと思うので、意外です。何に使うのでしょう?ポインタ型として派生させ、値を一意の識別子として扱うくらいしか思いつきません。
そう言えば気になりますね。調べてみたところ、メンバ0個の構造体は次の4つでした。
TRANSACTION_LIST_ENTRY (winnt.ab)
GDI_OBJECT (objidl.sbp: 下2つも同じ)
userSTGMEDIUM
userFLAG_STGMEDIUM
それぞれ見て回りましたが、中のメンバの型が宣言されていないなどといった理由のようで、全てのメンバがコメントアウトされているだけでした。