嵌入式c extern的用法

        

目录

一、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,我们可以提高代码的可读性和可维护性,同时也能够降低内存的使用。

相关推荐

  1. 嵌入c extern

    2024-06-09 08:58:02       7 阅读
  2. 嵌入软件中static

    2024-06-09 08:58:02       9 阅读
  3. Lambda 表达常见

    2024-06-09 08:58:02       33 阅读
  4. 嵌入工具

    2024-06-09 08:58:02       9 阅读
  5. 正则表达一些高级

    2024-06-09 08:58:02       31 阅读
  6. Qt中正则表达

    2024-06-09 08:58:02       11 阅读
  7. 嵌入-汇编】常汇编指令

    2024-06-09 08:58:02       29 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-09 08:58:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-09 08:58:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-09 08:58:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-09 08:58:02       20 阅读

热门阅读

  1. EntitiesSample_12. FixedTimestep

    2024-06-09 08:58:02       12 阅读
  2. idm下载管理工具优势

    2024-06-09 08:58:02       9 阅读
  3. 当我读李娟时我在想些什么

    2024-06-09 08:58:02       7 阅读
  4. 浅析Git子模块

    2024-06-09 08:58:02       8 阅读
  5. Flutter中防抖动和节流策略

    2024-06-09 08:58:02       12 阅读
  6. outlook邮件使用技巧

    2024-06-09 08:58:02       12 阅读
  7. 新手指南:如何使用Python快速上手深度学习

    2024-06-09 08:58:02       13 阅读
  8. Unity与前端交互:深度解析与实战指南

    2024-06-09 08:58:02       12 阅读
  9. windows下的which命令

    2024-06-09 08:58:02       7 阅读
  10. PHP基础

    2024-06-09 08:58:02       8 阅读
  11. 使用RedissonClient的管道模式批量查询key

    2024-06-09 08:58:02       7 阅读
  12. iOS中常用的一些宏以及用法

    2024-06-09 08:58:02       7 阅读