*.h ファイルと *.c ファイルで構成されるソフトウェア モジュールがあります。変数と関数の宣言は *.h ファイルにあり、関数の定義は *.c ファイルにあります。モジュール内の 2 つの関数は、モジュールの外部で使用することを意図していないヘルパー関数です。
この意図をモジュールのユーザーに明確にする最善の方法は何ですか?
関数を宣言しようとしましたstatic
が、*.h ファイルで宣言すると、GCC コンパイラで、関数が「静的に宣言されているが定義されていない」という警告が表示されます。*.c ファイルが#include
ディレクティブを使用して *.h ファイルをインクルードしているにもかかわらず、*.h ファイルと *.c ファイルが異なる翻訳単位として扱われるのはなぜですか?
static
*.c ファイルで作成される関数の宣言とその定義を配置することを伴わない、この問題の解決策はありますか? このソリューションは機能しますが、宣言をヘッダー ファイルに保持し、定義を実装ファイルに保持するという、私が考えていたことを破ってしまいます。