如果要访问 extern.c中的局部变量b就会出错,因为变量b作用域与代码块即fun函数内部。
出错提示b没有定义如下图所示:
2)演示修饰函数
有3个文件:main.c extern.c extern.h main.c文件要访问extern.c文件中定义的函数fun(通过#include "extern.h"方式),在extern.h中对函数fun用extern修饰。
main.c代码
#include <stdio.h> #include "extern.h" //演示extern关键字用法 int main(int argc, char** argv) { fun(); //调用extern.c中的函数 return 0; }
extern.c代码
#include <stdio.h> void fun(void) { printf("可以访问到函数fun\n"); }
extern.h代码
#ifndef __EXTERN_H #define __EXTERN_H extern void fun(void);//extern修饰函数 #endif
运行结果:main.c可以访问extern.c中的函数fun
如果extern.c中的函数fun前面有修饰符static,则会出错,提示fun没有定义。如下图所示: