欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

在C/C++中如何使用extern关键字

程序员文章站 2022-03-10 10:02:54
...

本篇文章介绍的是C/C++中extern关键字的用法,其中主要谈到修饰变量时的用法,可以参考一下,希望对你有所帮助。

1.基本解释
 extern 可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外,extern 也可以用来链接指定。
 extern 有两个作用:(1) 当它与"C"一起连用时,如:extern “C” void func(int a);则告诉编译器在编译 func 函数名时按着 C 的规则去翻译相应的函数名而不是 C++ 的。关于这点,或许可以在《深度探索C++对象模型》一书中寻找答案;另外,在 Linux 下有一个 backtrace 函数可以打印堆栈信息,可以查看 C++ 翻译的函数名(muduo 库中有使用这个函数)。
 (2) 当 extern 不与 “C” 在一起修饰变量或者函数时,如在头文件中:extern int g_Int; 它的作用就是声明函数或全局变量的作用范围的关键字,其声明的函数和变量可以在本模块或者其他模块中使用,记住它是一个声明不是定义!
2.当 extern 修饰变量时
 正确使用方法是:在 .c 文件中定义变量,在相应的 .h 文件中进行声明。
 我们通过是否会为变量来分配内存空间来判定是声明还是定义(严格来说,是单纯的分配内存,并不包括初始化部分)。那么 int i; 这句话是声明还是定义那?它既是声明,也是定义。如果我们在 test.h 文件中使用这句话,一旦在其他文件中定义 i(e.g.1),或者该文件被重复包含(e.g.2),那么就会产生重定义的错误。

/*
	e.g.1 	以下为3个文件
*/
//test.h
int i;

//test2.h
int i;

//main.cpp
#include "test.h"
#include "test2.h"
int main()
{
	return 0;
}
/*
	e.g.2 	以下为3个文件
*/
//test.h
int i;

//test2.h
#include "test.h"

//main.cpp
#include "test.h"
#include "test2.h"
int main()
{
	return 0;
}

相关教程:C视频教程

以上就是在C/C++中如何使用extern关键字的详细内容,更多请关注其它相关文章!

相关标签: C C++