C语言怎样定义和声明全局变量和函数最好


Posted in 面试题 onNovember 26, 2013
首先, 尽管一个全局变量或函数可以(在多个编译单元中) 有多处“声明”, 但是“定义” 却只能允许出现一次。定义是分配空间并赋初值(如果有) 的声明。最好的安排是在某个相关的.c 文件中定义, 然后在头文件(.h) 中进行外部声明, 在需要使用的时候, 只要包含对应的头文件即可。定义变量的.c 文件也应该包含该头文件, 以便编译器检查定义和声明的一致性。这条规则提供了高度的可移植性: 它和ANSI C 标准一致, 同时也兼容大多数ANSI 前的编译器和连接器。Unix 编译器和连接器通常使用“通用模式” 允许多重定义, 只要保证最多对一处进行初始化就可以了; ANSI C 标准称这种行为为“公共扩展”, 没有语带双关的意思。
可以使用预处理技巧来使类似DEFINE(int, i);的语句在一个头文件中只出现一次, 然后根据某个宏的设定在需要的时候转化成定义或声明。但不清楚这样的麻烦是否值得。如果希望让编译器检查声明的一致性, 一定要把全局声明放到头文件中。特别是, 永远不要把外部函数的原型放到.c 文件中: 通常它与定义的一致性不能得到检查, 而矛盾的原型比不用还糟糕。

Tags in this post...

面试题 相关文章推荐
Collection和Collections的区别
May 02 面试题
C语言如何决定使用那种整数类型
Nov 26 面试题
简述数组与指针的区别
Jan 02 面试题
将"引用"作为函数参数有哪些特点
Apr 05 面试题
.net笔试题
Mar 03 面试题
南京某软件公司的.net面试题
Nov 30 面试题
武汉世纪畅想数字传播有限公司.NET笔试题
Jul 22 面试题
VLAN和VPN有什么区别?分别实现在OSI的第几层?
Dec 23 面试题
简单说下OSPF的操作过程
Aug 13 面试题
接口的多继承会带来哪些问题
Aug 17 面试题
Linux机考试题
Oct 16 面试题
你在项目中用到了xml技术的哪些方面?如何实现的?
Jan 26 面试题
C,C++的几个面试题小集
Jul 13 #面试题
Java工程师面试集锦之Spring框架
Jun 16 #面试题
2019年Java 最常见的 面试题
Oct 19 #面试题
2019年Java面试必问之经典试题
Sep 12 #面试题
金讯Java笔试题目
Jun 18 #面试题
某公司Java工程师面试题笔试题
Mar 27 #面试题
JAVA代码查错题
Oct 10 #面试题
You might like
社区(php&&mysql)四
2006/10/09 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
PHP 图片处理
2020/09/16 PHP
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
jquery.combobox中文api和例子,修复了上面的小bug
2011/03/28 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
JavaScript从数组中删除指定值元素的方法
2015/03/18 Javascript
jquery ztree实现模糊搜索功能
2016/02/25 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
2017/08/23 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
详解webpack引用jquery(第三方模块)的三种办法
2019/08/21 jQuery
JS实现打字游戏
2019/12/17 Javascript
python数据结构之二叉树的统计与转换实例
2014/04/29 Python
在Python的Django框架中加载模版的方法
2015/07/16 Python
教大家玩转Python字符串处理的七种技巧
2017/03/31 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
python 读取数据库并绘图的实例
2019/12/03 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
Python爬虫headers处理及网络超时问题解决方案
2020/06/19 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
英文简历中的自我评价
2013/10/06 职场文书
毕业生自荐信的主要内容
2013/10/29 职场文书
刚毕业大学生自荐信范文
2014/02/20 职场文书
小学生教师节广播稿
2015/08/19 职场文书
建议书的格式及范文
2015/09/14 职场文书
python实现自动化群控的步骤
2021/04/11 Python