下载此文档

extern使用方法总结.docx


文档分类:通信/电子 | 页数:约7页 举报非法文档有奖
1/7
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/7 下载此文档
文档列表 文档介绍
Extern 的问题在于不知道这个关键词出现的时候到底是声明还是定义。 谨记:声明可以多次,
定义只能一次。在使用中
,要形成一种风格。
函数的声明 extern 关键词是可有可无的, 因为函数本身不加修饰的话就是 extern 的。但
是引用的时候一样是需要声
明的。而全局变量在外部使用声明时, extern 关键词是必须的,如果变量无 extern 修饰且没
有显式的初始化,同样成为
变量的定义,因此此时必须加 extern,而编译器在此标记存储空间在执行时加载如内存并初
始化为 0。而局部变量的声
明不能有 extern 的修饰,且局部变量在运行时才在堆栈部分分配内存。
引用性声明、定义性声明
强符号、弱符号
出现在 linux 的 gcc 链接分析中,可以加深链接的理解。
全局变量或函数本质上讲没有区别, 函数名是指向函数二进制块开头处的指针。 而全局
变量是在函数外部声明的变
量。函数名也在函数外,因此函数也是全局的。
头文件
首先说下头文件,其实头文件对计算机而言没什么作用,她只是在预编译时在 #include
的地方展开一下,没别的意
义了,其实头文件主要是给别人看的。
我做过一个实验,将头文件的后缀改成  ,然后在引用该头文件的地方用
#include""
编译, 链接都很顺利的过去了, 由此可知,头文件仅仅为阅读代码作用,没其他的作用
了!
不管是 C 还是 C++ ,你把你的函数,变量或者结构体,类啥的放在你的 .c 或者 .cpp 文
件里。然后编译成
lib,dll,obj,.o 等等,然后别人用的时候最基本的 gcc  |obj|dll|lib 等等。
但对于我们程序员而言, 他们怎么知道你的 lib,dll... 里面到底有什么东西?要看你的头
文件。你的头文件就是
对用户的说明。函数,参数,各种各样的接口的说明。
那既然是说明, 那么头文件里面放的自然就是关于函数, 变量, 类的“声明” 了。记着,
是“声明”,不是“定义
”。那么,我假设大家知道声明和定义的区别。所以,最好不要傻嘻嘻的在头文件里定义什
么东西。比如全局变量:
#ifndef _XX_ 头文件 .H
#define _XX_ 头文件 .H
int A;
#endif
那么,很糟糕的是,这里的 int A 是个全局变量的定义,所以如果这个头文件被多次引
用的话,你的 A 会被重复定义
。显然语法上错了。只不过有了这个 #ifndef 的条件编译,所以能保证你的头文件只被引用
一次,不过也许还是会岔子
,但若多个 c 文件包含这个头文件时还是会出错的,因为宏名有效范围仅限于本 c 源文件,
所以在这多个 c 文件编译时是
不会出错的,但在链接时就会报错,说你多处定义了同一个变量。
Linking...
 : error LNK2005: "int glb" (?glb@***@3HA) already defined in 
Debug/ : fatal error LNK1169: one or more multiply defined symbo

extern使用方法总结 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数7
  • 收藏数0 收藏
  • 顶次数0
  • 上传人aisheng191
  • 文件大小31 KB
  • 时间2018-11-05
最近更新