【嵌入式开发】extern关键字的用法
在C语言中,extern
关键字用于声明全局变量或函数,它有以下几个主要用途:
-
声明全局变量:
extern
关键字用于在一个文件中声明一个在另一个文件中定义的全局变量。这允许在多个文件中共享全局变量。// 在 file1.c 中定义全局变量 int sharedVar = 10; // 在 file2.c 中声明同一个全局变量 extern int sharedVar;
-
声明函数:
类似于全局变量,extern
关键字也用于在一个文件中声明在另一个文件中定义的函数。这允许在多个文件中调用同一个函数。// 在 file1.c 中定义函数 void sharedFunction() { // 函数体 } // 在 file2.c 中声明同一个函数 extern void sharedFunction();
-
指示链接器:
extern
关键字告诉链接器,所声明的变量或函数的定义在程序的其他地方。链接器会在程序的多个翻译单元(通常是多个源文件)中寻找这些定义。 -
避免重复定义:
在多个文件中使用extern
关键字声明同一个全局变量或函数,可以避免在每个文件中都定义它们,从而防止重复定义的错误。 -
模块化编程:
extern
关键字支持模块化编程,允许将程序分解为多个模块,每个模块可以独立编译,然后在链接时组合在一起。 -
头文件中的使用:
通常在头文件中使用extern
关键字来声明全局变量,这样包含头文件的源文件就可以访问这些变量,而不需要在每个源文件中都定义它们。// 在 shared.h 头文件中 extern int sharedVar; // 在某个源文件中 #include "shared.h" int sharedVar = 10; // 定义全局变量
-
函数原型:
在头文件中使用extern
关键字来提供函数原型,这有助于在编译时进行类型检查。// 在 shared.h 头文件中 extern void sharedFunction(void); // 在某个源文件中 #include "shared.h" void sharedFunction(void) { // 函数体 }
使用extern
关键字可以有效地管理程序中不同模块之间的变量和函数的可见性和访问权限,是实现程序模块化的重要手段。