しばらくの間、おそらく最初のバグのない C プログラムを作成したことを非常に誇りに思いました。ソースコード全体は次のとおりです。
int main;
がなくても問題なくコンパイルできますint
が、(なくても) 警告が出て-Wall
、バグのないプログラムを目指すプログラマーとしてはエラー扱いです。
このアプリケーションを喜んでコンパイルしたので、すぐに急いで起動しました。驚いたことに、セグメンテーション違反エラーが表示されました...
今真剣に。正確に何が起こっているのですか?
私の推測は次のとおりです。それはmain
の定義の欠如です。これは非常に明白ですが、コンパイラはそれを許可しています。OK、main
別の単位で定義されている可能性があります。しかし、リンカーでさえそれについて何もしません。特に理由は?