【C++】C++中的extern用法

在编程语言中, extern  关键字通常用于声明一个变量或函数是在其他文件或编译单元中定义的。这使得你可以在当前文件中使用这些变量或函数,而不需要在当前文件中重新定义它们。以下是一些常见的使用场景和解释:

1. C/C++语言中

extern  用于告诉编译器,某个变量或函数的定义在其他文件中。这通常用于多文件项目中,当一个文件需要访问另一个文件中定义的全局变量或函数时。
例如:

// file1.c
int globalVar = 10;

// file2.c
extern int globalVar; // 声明 globalVar 是在 file1.c 中定义的
void function() {
    globalVar = 20; // 现在可以在 file2.c 中修改 globalVar 的值
}


2. C++11及以后版本

在C++11及以后的版本中,引入了 inline 变量,这允许在头文件中定义变量,并且这些变量可以被多个编译单元使用,而不需要 extern 关键字。
例如:

// header.h
inline int inlineVar = 5; // 定义一个可以在多个文件中使用的变量

// file.cpp
#include "header.h"
void function() {
    inlineVar = 10; // 直接使用 inline 变量
}


3. 链接器符号

在某些编程环境中, extern  也可以指一个链接器符号,表示该符号的地址可以在程序的不同部分被引用。

使用 extern 时需要注意,如果声明了一个变量或函数但没有在其他地方定义,编译器会报错。此外,如果多个文件中都包含 extern 声明,但只有一个文件提供了定义,编译器会正常工作;但如果多个文件都提供了定义,将会导致链接错误。
 

相关推荐

  1. 【C++】C++extern

    2024-07-13 10:36:05       22 阅读
  2. 嵌入式c extern

    2024-07-13 10:36:05       21 阅读
  3. Veriloggenerate

    2024-07-13 10:36:05       56 阅读
  4. Python常见

    2024-07-13 10:36:05       62 阅读
  5. C++auto、decltype

    2024-07-13 10:36:05       46 阅读
  6. MATLABcell函数

    2024-07-13 10:36:05       59 阅读
  7. MYSQLEXISTS

    2024-07-13 10:36:05       52 阅读
  8. reactMQTT基础

    2024-07-13 10:36:05       51 阅读

最近更新

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

    2024-07-13 10:36:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 10:36:05       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 10:36:05       58 阅读
  4. Python语言-面向对象

    2024-07-13 10:36:05       69 阅读

热门阅读

  1. 如何理解李彦宏说的“不要卷模型,要卷应用”

    2024-07-13 10:36:05       17 阅读
  2. 2024年,SEC对加密监管的格局将继续演变

    2024-07-13 10:36:05       20 阅读
  3. Python热门面试题一

    2024-07-13 10:36:05       20 阅读
  4. 从零开始学习嵌入式----C语言数组指针

    2024-07-13 10:36:05       26 阅读
  5. 项目开源能够带来什么?从中得到了什么?

    2024-07-13 10:36:05       19 阅读
  6. 使用Spring Boot创建自定义Starter

    2024-07-13 10:36:05       25 阅读
  7. 面试题所有vue

    2024-07-13 10:36:05       22 阅读
  8. 求职学习day2

    2024-07-13 10:36:05       25 阅读
  9. Log4j的原理及应用详解(一)

    2024-07-13 10:36:05       25 阅读
  10. Log4j的原理及应用详解(二)

    2024-07-13 10:36:05       24 阅读
  11. 【uniApp】实现列表下拉触底加载更多功能

    2024-07-13 10:36:05       25 阅读
  12. 【第33章】MyBatis-Plus之预防安全漏洞

    2024-07-13 10:36:05       28 阅读