傻大方


首页 > 学习 >

文件|头文件的作用与作用域的关系( 三 )



按关键词阅读: 关系 文件 作用


这个与我们对函数的处理方法类似 , 不再举例说明 。
这里还有一个需要说明 , 本来与本文并不 。

15、十分相关 , 但前一段有个朋友遇到此问题 , 相信很多人都会遇到 , 那就是数组全局变量 。
他遇到的问题如下:在声明定义时 , 定义数组如下:int G_glob100;
在另一个文件中引用声明如下:int * G_glob;
在vc中 , 是可以编译通过的 , 这种情况大家都比较模糊并且需要注意 , 数组与指针类似 , 但并不等于说对数组的声明起变量就是指针 。
上面所说的的程序在运行时发现了问题 , 在引用声明的那个文件中 , 使用这个指针时总是提示内存访问错误 , 原来我们的连接程序并不把指针与数组等同 , 连接时 , 也不把他们当做同一个定义 , 而是认为是不相关的两个定义 , 当然会出现错误 。
正确的使用方法是在引用声明中声明如下:int G_glob1 。

16、00;
并且最好再加上一个extern , 更加明了 。
extern int G_glob100;
另外需要说明的是 , 在引用声明中由于不需要涉及到内存分配 , 可以简化如下 , 这样在需要对全局变量的长度进行修改时 , 不用把所有的引用声明也全部修改了 。
extern int G_glob;
C语言是现今为止在底层核心编程中 , 使用最广泛的语言 , 以前是 , 以后也不会有太大改变 , 虽然现在java,.net等语言和工具对c有了一定冲击 , 但我们看到在计算机最为核心的地方 , 其他语言是无论如何也代替不了的 , 而这个领域也正是我们对计算机痴迷的程序员所向往的 。
好了,看完文章,对与C语言头文件的作用应该有了跟多的理解吧,如果这些你原本都知 。

17、道了,那么仅当是温习一下而已,如果原本不知道,那么恭喜你,现在又学到一些技巧和知识.对于全局变量的定义和声明,其实还有另外一个解决的方法,聪明的你可能早已经猜到了:),没错,就是用宏定义的技巧实现.比如a.h文件当中有: #ifdef AAAint i=0;
#elseint i;
#endif那么,在a.c文件当中,有如下语句:.#define AAA#include a.h.而对于其他的任何包含a.h文件的头文件或者.c源文件,只需要直接包含a.h就行了.#include a.h.这样就可以达到在a.c文件当中定义变量一次,而在其他的文件当中声明该变量的目的.当然了,你完全可以根据自己的需要来 。

【文件|头文件的作用与作用域的关系】18、决定在哪个需要包含a.h的文件当中定义宏AAA,但是我要说的是在同一个工程的不同的需要包含a.h的文件当中,你只能定义AAA一次,否则在连接这些目标文件时会出现重复定义的错误,即使你的单独目标文件编译没有任何的问题.当然,这里说的仅仅是对全局变量的声明技巧,强烈的推介大家在头文件中使用宏定义实现对整个头文件的防止重复包含,当然了,这个技巧大多数的c语言程序员都懂.#ifndef XXX#define XXX#endif这样做会让你的程序更加稳健,很大程度上减少了不必要的麻烦.最后给出一点点全局变量使用需要注意的问题,这也仅仅是个建议,或者说一种编程习惯 ;
)1) 所有全局变量全部以g_开头,并且尽可能声明成static类型. 2) 尽量杜绝跨文件访问全局变量.如果的确需要在多个文件内访问同一变量,应该由该变量定义所在文件内提供GET/PUT函数实现. 3) 全局变量必须要有一个初始值,全局变量尽量放在一个专门的函数内初始化. 4) 如调用的函数少于三个,请考虑改为局部变量实现.。


稿源:(未知)

【傻大方】网址:/a/2021/0902/0024073978.html

标题:文件|头文件的作用与作用域的关系( 三 )


上一篇:薪酬管理|大学考试试卷《薪酬管理》及参考答案

下一篇:风苑|风苑B区修改后质量评估报告