08/02/12 11:44:05
趣味で(ほぼ無意味ですが)C++とほぼ同等のコンパイラを作っています。
当然テンプレートとかはないですが、文法がそっくりという意味です。
質問なのですがC++は何故、クラスの定義がファイルの行数的に先に行なわれていないとコンパイルエラーになるのでしょうか?
例えば
CHoge test;
class CHoge
{
};
こういう順番だと、CHogeって何?未定義なんだけど。ってエラーになりますよね。
ファイルの上から処理して言ってるのだから当たり前なのは分かってます。
ですが先に class などの定義系を先に処理してからにすれば回避できる問題かと思います。
「先に全ファイルをチェックして定義系を処理してから、再度全ファイルを処理する」
という2度処理が、C++が生まれたころのマシンスペックではもったいなかったのでしょうか?