0

私はC89を初めて使用しますが、関数を呼び出す前に関数を宣言する必要があるようです。したがって、これは受け入れられません。

void foo() {
    bar();
}

void bar() {
    // do stuff
}

なぜなら、ファイルのbar()後で定義されているからです。foo()これを回避する方法はありますか?ヘッダーファイルが必要ですか?

4

2 に答える 2

2

プロトタイプを追加します。

void bar(); // prototype for function bar() which is implemented later

void foo() {
    bar();
}

void bar() {
    // do stuff
}

複数のソースコードファイルを含むプロジェクトの場合、プロトタイプは通常、ヘッダーファイルに配置され、複数のソースファイルに含まれます。実装は、単一のソースファイルでのみ指定する必要があります。コンパイラは、適切な型チェックなどを実行できるようにするためにプロトタイプが必要です。

于 2010-02-23T02:02:44.773 に答える
0

また、関数をファイルの外部から呼び出す必要がない場合 (つまり、関数を「静的」にできる場合) は、コンパイラが関数の定義を認識できるように、ファイル内の関数を単純に並べ替えることができます。関数を使用する前に。

于 2010-02-23T02:11:56.160 に答える