嵌入式c extern的用法

发布于:2024-06-09 ⋅ 阅读:(153) ⋅ 点赞:(0)

        

目录

一、extern关键字的作用

二、使用示例

三、注意事项

四、总结


在嵌入式编程中,特别是在使用C语言进行STM32等嵌入式系统的开发时,extern关键字是一个非常重要的概念。它主要用于声明外部变量或函数,告诉编译器这些变量或函数的定义在其他的源文件中,而不是当前文件。以下是关于extern用法的详细说明和示例。

一、extern关键字的作用

  • 声明外部变量:extern关键字用于声明一个变量已经在其他文件中定义过,这样编译器就不会在当前文件中为该变量分配内存空间,而是直接引用该变量。
  • 声明外部函数:extern关键字也可以用于声明一个函数已经在其他文件中定义过,这样编译器就知道这个函数是存在的,并可以在当前文件中调用它。

二、使用示例

1. 声明外部变量

假设我们在一个名为file1.c的文件中定义了一个全局变量global_var

// file1.c
int global_var = 10;

然后,在另一个名为file2.c的文件中,我们可以使用extern关键字来声明并使用这个变量:

// file2.c
#include <stdio.h>
extern int global_var; // 声明全局变量
int main() {
printf("%d\n", global_var); // 使用全局变量
return 0;
}

2. 声明外部函数

假设我们在file1.c文件中定义了一个函数add

// file1.c
int add(int a, int b) {
return a + b;
}

file2.c文件中,我们可以使用extern关键字来声明并使用这个函数:

// file2.c
#include <stdio.h>
extern int add(int a, int b); // 声明函数
int main() {
int result = add(1, 2); // 使用函数
printf("%d\n", result);
return 0;
}

三、注意事项

  1. 多次声明,一次定义:对于使用extern声明的变量或函数,可以在多个文件中进行声明,但只能在一个文件中进行定义。
  2. 头文件的使用:如果一个全局变量或函数需要在多个文件中使用,通常建议将其定义放在一个头文件中,并在其他需要使用的文件中包含这个头文件。
  3. C++中的extern "C":在C++中,由于C++支持函数重载,所以编译器会对函数名进行修饰(也称为“名字修饰”或“名字改编”)。为了能够在C++中正确地调用C语言编写的函数,可以使用extern "C"来告诉编译器按照C语言的规则来处理这些函数。

四、总结

   extern关键字在嵌入式编程中扮演着重要的角色,它允许我们在不同的源文件之间共享变量和函数。通过正确地使用extern,我们可以提高代码的可读性和可维护性,同时也能够降低内存的使用。


网站公告

今日签到

点亮在社区的每一天
去签到