私が書いていないコードに取り組んでいて、たくさんあることに気付きましたextern void my_func();
。
私の理解ではextern
、関数ではなく、グローバル変数の場合です。
extern
関数をヘッダーファイルに入れてそれを含めるのではなく、関数を宣言する実用的な理由はありますか? それとも、これは単にスタイル上の選択ですか?
これは、何らかの理由でヘッダー ファイルで関数が宣言されていない場合にのみ必要です。関数は常にデフォルトであるため、extern
関数には常に不要です。extern
ヘッダー ファイル全体をインクルードする代わりに、関数を使用する前に *.c ファイルでプロトタイプを宣言するだけで十分ではありませんか? 関数に extern を使用する必要はありません。まだ試していませんが、そのように動作すると思われます。
関数の 1 つの使用法は、extern
2 つのモジュールがあると仮定することです: 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