組込み系は歴史が古く、自分が生まれる前のコードが現役で動いてることが多い。
そういえばこんなのもあったなあというメモ。
見つけたら適宜追加。

古い規格

sample.c
 func(a, b)                      
 int a, b;                       
 {                                       
       .                                 
       .                         
 }

K&R規格であるためANSI規格とは関数定義の方法が異なる。
今後誰がこのモジュールを触るか分からないため(もしかしたら新人かもしれない)、現行の規格に則った定義に変更して他モジュールと統一した。
(追記)
ANSI規格で関数定義していれば完全に正しいようなプログラムでも K&R スタイルで書くと正しくなくなる (そしてそれがコンパイルエラーにならない) 場合が有る。(また、C++ ではこのスタイルは廃止)

たらい回し

sample.c
AAA[(UH)BBB[(UH)CCC[(UH)DDD[(UH)EEE]]]]

別の場所にテーブルが作られており、それを参照するためのコード。
EEEを貰って、それからDDDを参照し、そのDDDからCCCを参照...といったように役所ばりにたらい回しにされるコード。
特に説明コメントがあるわけでもなく、一見しただけでは意味が分からなかった。
テーブル周りは今後触ることは無さそうなので、単純に上記コードをバラけさせて説明コメントを追加した。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.