神奇的C语言十一:extern怎么用?
来源:互联网 发布:太平公主知乎 编辑:程序博客网 时间:2024/06/05 09:16
1、extern主要涉及的问题就是变量作用域。
extern用于将定义在程序中某个位置的全局变量或文件内部静态变量的作用域扩展到extern所在的作用域中extern所在行的下方。
看例子:
int a = 100;int main(){int a = 99;{int a = 88;if (a == 88){extern int a;printf("%d", a);}}return 0;}
extern int a所在作用域中extern int a的下方只有一条printf语句,extern的作用这里是扩展全局变量的作用域,所以printf编译时起作用的是全局变量a。
有了这个特性,我们就可以游刃有余地处理全局变量和局部变量重名的问题了。
2、extern一个函数有什么用?
没啥用。(可能的作用是暗示别人这个函数可能是在别的文件里面定义的)。
3、extern "C"
在C++里面用到的。C++编写的库中的函数的名称会发生变化,这是为了实现函数多态。C++编译器在解析外部库的时候默认按照C++的方式来解析,会尝试还原出函数原来的名字‘。如果导入的是C编写的库,函数名没有经过C++那种方式的处理,就会被还原出错误的名称。为了阻止还原名称的操作,就需要程序员告诉编译器,此库是C写的,不要进行还原。extern "C"起的就是这个作用。
4、extern还需要注意什么
一、static变量和函数的作用范围是文件内的,因为编译时不会生成static变量、函数的导出符号,所以不能在别的文件中使用该static变量/函数。
二、定义数组和定义指针不一样,所以int a[88]不能通过extern int * a来声明。extern int * a声明的是 int * a。
0 0
- 神奇的C语言十一:extern怎么用?
- 神奇的C语言二十一:谈谈位运算
- c语言extern的用法
- c语言 extern的作用
- C语言extern与static的用法,及extern “c
- C/C++ 感悟 --- 神奇的语言
- 神奇的C语言一:函数指针
- 神奇的C语言十四:可变参数
- 神奇的C语言十五:dummy代码?
- 神奇的C语言五:异常处理
- 神奇的C语言八:慎用switch
- 神奇的C语言十二:宏
- 神奇的C语言十三:关于void
- 神奇的C语言十七:typeof关键字
- C语言中#的神奇作用
- 遇到一个C语言的神奇问题
- 神奇的C语言++运算符
- 神奇的C语言十九:C语言的内存分配
- poj-2159
- Spring 的 BeanWrapperImpl 实体类循环赋值
- memcpy/memset
- 今天的天气阴暗的天气
- Android Studio-Gradle项目中添加JNI生成文件(.so文件)
- 神奇的C语言十一:extern怎么用?
- 多态
- c++创建对象的两种方式
- [歪谈]员工(人才),留得住是因为本身就留得住;留不住的,你永远留不住
- TCP 的那些事儿(下)
- 算法java实现--分治法--棋盘覆盖问题
- RotateAnimation类
- LeetCode Combination Sum
- 沪深IF300震荡上行,有短期回落的可能