コンパイルされた (およびリンクされた) バイナリの関数が、C ファイルに記述されている順序で表示されるという C 標準の要件はありますか?
以下の例では、コンパイラは関数を削除/インライン化しておらず、それらはすべてバイナリに存在すると仮定してください。問題は、コンパイラが空の関数で何をするかではなく、関数の順序についてです。
たとえば、example.c をコンパイルすると、次のようになります。
void bar() { }
void foo() { bar(); }
int main() { foo(); }
出力ファイルのfoo
後に続くと確信できますか?bar