私は、static
の関数は自分のファイル内でしかアクセスできないが、それらの外部ではアクセスできないと読んでいます。Cの静的関数は他のファイルからもアクセスできます
#include <stdio.h>
static void staticFunc(void)
{
puts("Static function called");
}
void nonStaticFunc(void)
{
puts("Non-Static function called ");
}
、その後は次のように別のファイルfile_2.c
にインポートし、それらの両方を呼び出す
file_a.c、その上に私が代わりに戻って両方の文字列を取得:私は、ファイルfile_a.c
に二つの機能を定義しましたエラーの:
file_b.c
#include "file_a.c"
int main(int argc, char *argv[])
{
staticFunc();
nonStaticFunc();
return 0;
}
プリント:
Static function called
Non-Static function called
どうしてですか?
スタティック関数は、同じコンパイル単位でのみ使用できます。あなたがファイルを 'インクルード 'するので、それは同じユニットの一部になります。 –
'#include'ディレクティブの詳細を読むことをお勧めします。このディレクティブは、なぜあなたが提供した結果を得ているのかを理解するのに役立ちます。 –
'-E'でコンパイルして、プリプロセッサの出力を見ることもできます。プリプロセッサの出力は、コンパイラが入力とみなすものです。 – user3386109