1. ホーム
  2. c

[解決済み] Cの静的関数

2022-04-21 07:57:15

質問

C言語で関数を静的にする意味は何ですか?

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

関数の作成 static は他の翻訳ユニットから隠蔽されるため、この翻訳ユニットは カプセル化 .

helper_file.c

int f1(int);        /* prototype */
static int f2(int); /* prototype */

int f1(int foo) {
    return f2(foo); /* ok, f2 is in the same translation unit */
                    /* (basically same .c file) as f1         */
}

int f2(int foo) {
    return 42 + foo;
}

main.c :

int f1(int); /* prototype */
int f2(int); /* prototype */

int main(void) {
    f1(10); /* ok, f1 is visible to the linker */
    f2(12); /* nope, f2 is not visible to the linker */
    return 0;
}