C プログラミング言語の本では、静的変数の使用法とトピックwhat-does-static-mean-in-ac-programについて説明しています。
- 関数内の静的変数は、呼び出し間でその値を保持します。
- 静的グローバル変数または関数は、宣言されているファイルでのみ「表示」されます
本と同じように説明していますが、ポイント1は使えてポイント2は使えません。
私のコード:
header.h
static int VAL = 15;
int canShare = 1;
static void hello(char c) {
printf("header file -> VAL: %d\n", VAL);
printf("header file -> canShare: %d\n", canShare);
printf("hello func -> %d\n", c);
}
main.c
#include <stdio.h>
#include "header.h"
main() {
printf("main -> VAL: %d\n", VAL+1);
printf("main -> canShare: %d\n", canShare+1);
hello('A');
}
出力
main -> VAL: 16
main -> canShare: 2
header file -> VAL: 15
header file -> canShare: 1
hello func -> 65