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


本文摘自PHP中文网,作者little bottle,侵删。

本篇文章介绍的是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),那么就会产生重定义的错误。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

/*

    e.g.1   以下为3个文件

*/

//test.h

int i;

 

//test2.h

int i;

 

//main.cpp

#include "test.h"

#include "test2.h"

int main()

{

    return 0;

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

/*

    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关键字的详细内容!

相关阅读 >>

dev c++怎么改语言

c++中对象如何作为参数传递和返回?(代码示例)

microsoft visual c++ 怎么使用?

c++用什么软件编程

c语言中&是什么意思?

c语言中 & 是什么意思?

c++学习路线

c++类型如何进行转换

c++文件怎么进行读取和写入操作

c语言的文件存取方式只能是顺序存取?

更多相关阅读请进入《c》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...