//head file library.h
#ifndef LIBRARY_H
#define LIBRARY_h
extern FILE* logfile; //declaring an extern file pointer
/*other random codes*/
#endif
//end of head file
//source code main.c
#include
#include"library.h"
FILE* logfile; // declare the extern pointer is used in this file
int main()
{
logfile=fopen(...);
//main function
return 0;
}
//end of main.c
//source code backend.c
#include"libarary.h"
static FILE* logfile=fopen(...);
//end of backend.c
如上所述,extern在標頭檔案中宣告一個跨檔案的全域性變數,每一個需要使用這個變數的檔案都要單獨宣告(不加extern再宣告一遍)
而static用於宣告一個靜態變數。靜態變數不能被其他檔案訪問,因此可以與其他檔案的全域性變數同名。另外如果一個變數在檔案中被宣告為靜態變數以後,該檔案不能再有同名的跨檔案全域性變數
//head file library.h
#ifndef LIBRARY_H
#define LIBRARY_h
extern FILE* logfile; //declaring an extern file pointer
/*other random codes*/
#endif
//end of head file
//source code main.c
#include
#include"library.h"
FILE* logfile; // declare the extern pointer is used in this file
int main()
{
logfile=fopen(...);
//main function
return 0;
}
//end of main.c
//source code backend.c
#include"libarary.h"
static FILE* logfile=fopen(...);
/*other random codes*/
//end of backend.c
如上所述,extern在標頭檔案中宣告一個跨檔案的全域性變數,每一個需要使用這個變數的檔案都要單獨宣告(不加extern再宣告一遍)
而static用於宣告一個靜態變數。靜態變數不能被其他檔案訪問,因此可以與其他檔案的全域性變數同名。另外如果一個變數在檔案中被宣告為靜態變數以後,該檔案不能再有同名的跨檔案全域性變數