面试题:C++ extern作用?

简介: 面试题:C++ extern作用?

面试题:C++ extern作用?

在C++中,关键字extern可以用于声明变量或者函数是在别处定义的。简单来说,关键字extern用来告诉编译器一个名称的实际位置详细信息,以便在其他文件中使用该变量或函数。

使用场景

如果在多个源文件中使用同一全局变量或函数,则需要使用extern关键字来进行声明。

例如,在main.cpp文件中定义了一个全局变量g_var,并在另外一个文件func.cpp中也希望访问这个全局变量,则需要在func.cpp中使用extern来声明该全局变量的存在,如下所示:

// main.cpp
#include <iostream>
int g_var = 0; //定义全局变量
int main() {
    std::cout << "g_var in main is: " << g_var << std::endl; //输出全局变量
    return 0;
}
// func.cpp
extern int g_var; //使用extern关键字声明全局变量
void func() {
    g_var++; //修改全局变量的值
}

此时,程序可以在main.cpp和func.cpp两个文件中共享相同的全局变量g_var。

注意事项

以下是使用extern关键字的几点注意事项:

  • 在变量定义和使用的地方都可以加上extern关键字,但只有在变量定义前面加上extern才表示变量对其他文件是可见的。
  • 如果在一个文件中定义并初始化了一个全局变量,同时在另一个文件中使用该全局变量时不需要extern声明。因为全局变量的定义已经包含了extern的语义。
  • 如果多个文件包含同一头文件,该头文件中定义并初始化了一个全局变量,则所有包含该头文件的文件都将获得对这个变量的定义,此时需要使用关键字extern表示它部分或全部地可能已经定义。

综上所述,关键字extern用于告诉编译器一个名称的实际位置详细信息,以便在其他文件中使用该变量或函数,常用于多文件的项目中或库的开发中。

相关文章
|
19天前
|
存储 算法 C++
C/C++工程师面试题(STL篇)
C/C++工程师面试题(STL篇)
36 6
|
19天前
|
存储 缓存 数据库
C/C++工程师面试题(数据库篇)
C/C++工程师面试题(数据库篇)
41 9
|
2月前
|
C++
二叉树进阶面试题(精华总结)【C++版本】
二叉树进阶面试题(精华总结)【C++版本】
|
2月前
|
编译器 C++ Python
【C/C++ 泡沫精选面试题02】深拷贝和浅拷贝之间的区别?
【C/C++ 泡沫精选面试题02】深拷贝和浅拷贝之间的区别?
36 1
|
2月前
|
敏捷开发 安全 API
C/C++ 工程师面试:如何精彩展示你的项目经验并获得高分
C/C++ 工程师面试:如何精彩展示你的项目经验并获得高分
78 0
|
2月前
|
存储 编译器 C语言
【C/C++ 关键字 存储类说明符 】一文带你了解C/C++ 中extern 外部声明 关键字的使用
【C/C++ 关键字 存储类说明符 】一文带你了解C/C++ 中extern 外部声明 关键字的使用
52 1
|
2月前
|
消息中间件 存储 算法
【C/C++ 泡沫精选面试题04】在实际项目中,多进程和多线程如何选择?
【C/C++ 泡沫精选面试题04】在实际项目中,多进程和多线程如何选择?
47 1
|
2月前
|
编解码 缓存 安全
【C/C++ 泡沫精选面试题03】谈谈C/C++ 智能指针?
【C/C++ 泡沫精选面试题03】谈谈C/C++ 智能指针?
33 1
|
2月前
|
缓存 算法 编译器
【C/C++ 泡沫精选面试题01】提高c++性能,你用过哪些方式去提升?
【C/C++ 泡沫精选面试题01】提高c++性能,你用过哪些方式去提升?
40 1
|
2月前
|
设计模式 C++
C++设计模式:面试题精选集
C++设计模式:面试题精选集
97 0