C语言中的extern:全局变量和函数的声明与使用

概念:

在C语言中,extern是一个关键字,用于声明全局变量和函数。它告诉编译器该变量或函数在其他源文件中定义,让编译器知道在链接时需要从其他源文件中寻找其定义。extern关键字不会分配内存,只是告诉编译器该变量或函数存在于其他源文件中。

全局变量的声明:

在某个源文件中声明全局变量时,如果需要在其他源文件中使用它,我们需要在其他源文件中使用extern关键字进行声明,以便编译器知道该变量的存在。

示例:

在file1.c文件中声明全局变量num:

int num; // 全局变量声明

在file2.c文件中使用file1.c文件中声明的全局变量num:

extern int num; // 使用extern关键字进行声明

函数的声明和使用:

在某个源文件中声明函数时,如果需要在其他源文件中调用该函数,我们需要在其他源文件中使用extern关键字进行声明,以便编译器知道该函数的存在。

示例:

在file1.c文件中声明函数add:

int add(int a, int b); // 函数声明

在file2.c文件中使用file1.c文件中声明的函数add:

extern int add(int a, int b); // 使用extern关键字进行声明

int main() {

int result = add(2, 3); // 调用外部定义的函数

...

}

注意事项:

extern关键字只能用于全局变量和函数的声明,不能用于局部变量。

声明一个全局变量或函数时,如果不加extern关键字,则默认为extern。

如果一个全局变量或函数在某个源文件中定义,而在其他源文件中使用时,需要在使用它的源文件中进行声明,以便编译器知道该变量或函数的存在。

使用extern关键字声明的变量或函数,需要保证其在链接时是可见的,即在链接阶段能够找到其定义。

使用场景:

extern关键字主要用于多个源文件间共享全局变量和函数的情况。当我们需要在多个源文件中使用同一个全局变量或函数时,可以在其中一个源文件中定义它,然后在其他源文件中使用extern关键字进行声明,从而在编译和链接过程中正确地引用和使用它。

总结:

extern是C语言中的一个关键字,用于声明全局变量和函数。它告诉编译器该变量或函数在其他源文件中定义,以便在链接时从其他源文件中寻找其定义。我们可以使用extern关键字在一个源文件中声明全局变量和函数,从而在其他源文件中使用它们。通过合理使用extern关键字,我们可以实现在不同源文件间共享全局变量和函数的目的。

 

相关推荐

  1. C语言extern全局变量函数声明使用

    2024-01-28 13:30:03       53 阅读
  2. 深入理解C语言 extern` static

    2024-01-28 13:30:03       34 阅读
  3. c语言,一些全局变量局部变量定义及区别

    2024-01-28 13:30:03       36 阅读
  4. C语言变量函数详解

    2024-01-28 13:30:03       52 阅读
  5. externstatic使用区别

    2024-01-28 13:30:03       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-28 13:30:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-28 13:30:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-28 13:30:03       82 阅读
  4. Python语言-面向对象

    2024-01-28 13:30:03       91 阅读

热门阅读

  1. RedisCluster集群扩容

    2024-01-28 13:30:03       67 阅读
  2. Elasticsearch 中使用MustNot等同于不登录遇到的坑

    2024-01-28 13:30:03       51 阅读
  3. 第二百九十回

    2024-01-28 13:30:03       45 阅读
  4. C++二分查找

    2024-01-28 13:30:03       57 阅读
  5. Nginx中的关于配置HTTPS模块详解

    2024-01-28 13:30:03       62 阅读
  6. 2024.1.28 寒假训练记录(11)

    2024-01-28 13:30:03       70 阅读
  7. Redis:入门

    2024-01-28 13:30:03       50 阅读
  8. ES如何搜索两个索引

    2024-01-28 13:30:03       54 阅读
  9. pnpm 用法

    2024-01-28 13:30:03       50 阅读