c語言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用于聲明一個靜態變量。靜態變量不能被其他文件訪問,因此可以與其他文件的全局變量同名。另外如果一個變量在文件中被聲明為靜態變量以后,該文件不能再有同名的跨文件全局變量