静的外部変数とその使用法について知るために、小さな例を試しています。静的変数はローカル スコープであり、外部変数はグローバル スコープです。
static5.c
#include<stdio.h>
#include "static5.h"
static int m = 25;
int main(){
func(10);
return 0;
}
static5.h
#include<stdio.h>
int func(val){
extern int m;
m = m + val;
printf("\n value is : %d \n",m);
}
gcc static5.c static5.h
o/p :
static5.c:3: error: static declaration of m follows non-static declaration
static5.h:3: note: previous declaration of m was here
編集済み
正しいプログラム:
a.c:
#include<stdio.h>
#include "a1_1.h"
int main(){
func(20);
return 0;
}
a1.h:
static int i = 20;
a1_1.h:
#include "a1.h"
int func(val){
extern int i;
i = i + val;
printf("\n i : %d \n",i);
}
これは問題なく動作します。ただし、これは単一のコンパイル単位にコンパイルされます。したがって、静的変数にアクセスできます。コンパイル単位全体で、extern 変数を使用して static 変数を使用することはできません。