1. ホーム
  2. c

[解決済み】C言語の「static」関数とは?

2022-03-23 07:12:34

質問

質問は、プレーンについてでした。 c 関数ではなく c++ static メソッドであることが、コメントで明らかになりました。

が何を意味するのか理解できました。 static という変数がありますが、これは何でしょうか? static 関数は?

また、なぜ関数を宣言すると、たとえば void print_matrix で、例えば a.c (ウィズアウト a.h を含む。 "a.c" - 私は "print_matrix@@....) already defined in a.obj" しかし、これを static void print_matrix とすると、コンパイルされるのですか?

アップデイト 誤解のないように言っておきますが、このように .c は、多くの方のご指摘の通り、まずいです。のスペースを一時的に確保するためにやっているだけです。 main.c これらの関数をどのようにすれば適切な .h.c ファイルを作成します。一時的な、迅速な解決策です。

どのように解決するのですか?

static 関数は、同じファイル内の他の関数からしか見えない関数です(より正確には 翻訳単位 ).

EDIT : 質問の著者が「クラスメソッド」を意味していると考えていた人へ。質問には次のようなタグが付けられています。 C Cの関数を指しています。C++/Java/...の)クラスメソッドの場合。 static は、このメソッドがクラスそのものに対して呼び出されることを意味し、そのクラスのインスタンスは必要ありません。