在c语言中,extern关键字的主要作用是用于引用在其他文件中定义的外部变量、函数或者其他外部实体。
在stm32中,由于通常会使用多个.c文件完成一个应用程序的编写,为了能够在多个文件中访问同一个变量,我们可以使用extern关键字进行声明。这时候,变量并没有被分配内存空间,仅仅是告诉编译器这个变量在其他地方有定义。在链接时,编译器会去寻找这个变量的实际定义,并将所有引用该变量的地方链接到实际定义处。
在嵌入式开发中,我们经常会需要定义一些全局变量用于共享数据。而由于需要在多个.c文件中使用这些变量,这时就可以使用extern来声明这些全局变量。
举个例子,如果我们要使用一个全局变量“count”,那么我们可以在需要使用该变量的文件中使用extern关键字进行声明:
extern int count;
这样,编译器在编译该文件时就不会分配内存空间,而是在链接时寻找全局变量“count”的实际定义。
除了用于声明全局变量外,extern还可以用于声明函数。如果在一个.c文件中定义了一个函数,而在其他文件中需要调用该函数,我们同样可以使用extern进行声明。
如下面的例子,我们在文件A.c中定义了一个函数foo(),并将其进行了extern声明。在文件B.c中,可以直接调用该函数:
// A.c文件中:
void foo(); // extern声明
void main(){
foo();
}
// B.c文件中:
extern void foo(); // 外部声明
void bar(){
foo();
}
在stm32开发中,extern关键字主要用于声明在其他文件中定义的外部变量、函数等外部实体。通过使用extern关键字,可以方便地在多个.c文件中访问同一个变量,实现代码的复用。
需要注意的是,extern只是告诉编译器某个变量或函数在其他地方定义,只有在链接时才会分配内存、实现代码跳转。因此,在使用extern声明之前,确保该变量或函数在其他文件中有定义。