文章目錄
- 一、extern:聲明外部變量或外部函數
- 1.extern的作用
- 2.代碼舉例
- ①例1
- ②例2
- ③例3
一、extern:聲明外部變量或外部函數
1.extern的作用
extern的作用:聲明外部的全局變量或外部的函數,以實現跨文件使用其他.c/.h文件的全局變量或函數
2.代碼舉例
①例1
以下兩個.c文件:extern.c,main.c。我們使用extern關鍵字,在main.c中聲明并調用extern.c中的全局變量和函數
//extern.c
int global = 10;void bar() {static cnt = 0;cnt++;printf("cnt = %d\n", cnt);
}
//main.c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//聲明外部全局變量
extern global;
//聲明外部函數
extern bar();int main(void) {//extern關鍵字printf("extern global = %d\n", global);int m = 5;while (m--) {bar();}return 0;
}
②例2
加入static關鍵字
//extern.c
int global = 10;void bar() {static cnt = 0;cnt++;printf("cnt = %d\n", cnt);
}
//main.c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//static關鍵字
//extern關鍵字:extern + 全局變量/函數,則可使用其他文件聲明的全局變量/函數void fun() {static count = 0;count++;printf("count = %d\n", count);
}//聲明外部全局變量
extern global;
//聲明外部函數
extern bar();int main(void) {//static關鍵字int n = 3;while (n--) {fun();}printf("\n");//extern關鍵字printf("extern global = %d\n", global);int m = 5;while (m--) {bar();}return 0;
}
輸出結果:
③例3
加上.h頭文件,.c文件中包含對應的頭文件
//extern.h
int globalVar = 20;
//extern.c
#include "extern.h"
int global = 10;void bar() {static cnt = 0;cnt++;printf("cnt = %d\n", cnt);
}
//main.c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//static關鍵字
//extern關鍵字:extern + 全局變量/函數,則可使用其他文件聲明的全局變量/函數void fun() {static count = 0;count++;printf("count = %d\n", count);
}//聲明外部全局變量
extern global;
extern globalVar;
//聲明外部函數
extern bar();int main(void) {//static關鍵字int n = 3;while (n--) {fun();}printf("\n");//extern關鍵字printf("extern global = %d\n", global);printf("extern globalVar = %d\n", globalVar);int m = 5;while (m--) {bar();}return 0;
}
輸出結果: