8

私が書いていないコードに取り組んでいて、たくさんあることに気付きましたextern void my_func();

私の理解ではextern、関数ではなく、グローバル変数の場合です。

extern関数をヘッダーファイルに入れてそれを含めるのではなく、関数を宣言する実用的な理由はありますか? それとも、これは単にスタイル上の選択ですか?

4

3 に答える 3

11

これは、何らかの理由でヘッダー ファイルで関数が宣言されていない場合にのみ必要です。関数は常にデフォルトであるため、extern関数には常に不要です。extern

于 2010-10-06T22:34:42.117 に答える
-3

ヘッダー ファイル全体をインクルードする代わりに、関数を使用する前に *.c ファイルでプロトタイプを宣言するだけで十分ではありませんか? 関数に extern を使用する必要はありません。まだ試していませんが、そのように動作すると思われます。

于 2012-11-12T15:18:41.120 に答える
-3

関数の 1 つの使用法は、extern2 つのモジュールがあると仮定することです: module_a (module_a.hおよびmodule_a.cファイルに実装)、module_b (module_b.hおよびmodule_b.cファイルに実装)。ここで、module_b の特定の関数を module_a で使用する必要があります。ただし、module_b のすべての機能を module_a に公開する必要はありません。その場合、代わりに必要な関数プロトタイプのみ#include "module_b.h"を使用できます。extern

于 2010-10-06T23:24:40.370 に答える