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


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

Tags in this post...

面试题 相关文章推荐
Weblogc domain问题
Jan 27 面试题
HashMap和Hashtable的区别
May 18 面试题
一套SQL笔试题
Aug 14 面试题
Shell如何接收变量输入
Aug 06 面试题
Linux文件操作命令都有哪些
Jul 23 面试题
介绍一下Make? 为什么使用make
Dec 08 面试题
在浏览器端如何得到服务器端响应的XML数据
Nov 24 面试题
Prototype如何为一个Ajax添加一个参数
Dec 06 面试题
如何用Java实现列出某个目录下的所有子目录
Jul 20 面试题
有abstract方法的类一定要用abstract修饰吗
Mar 14 面试题
Java如何调用外部Exe程序
Jul 04 面试题
怎样声明一个匿名的内部类
Jun 01 面试题
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
MYSQL环境变量设置方法
2007/01/15 PHP
apache+php完美解决301重定向的两种方法
2011/06/08 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
2014/01/02 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
Javascript核心读书有感之表达式和运算符
2015/02/11 Javascript
jQuery实现的支持IE的html滑动条
2015/03/16 Javascript
理解JS事件循环
2016/01/07 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
jQuery.Callbacks()回调函数队列用法详解
2016/06/14 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
Bootstrap进度条学习使用
2017/02/09 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
jQuery实现的模仿雨滴下落动画效果
2018/12/11 jQuery
antd Upload 文件上传的示例代码
2018/12/14 Javascript
微信小程序websocket实现即时聊天功能
2019/05/21 Javascript
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
Python实现从订阅源下载图片的方法
2015/03/11 Python
Python去除字符串两端空格的方法
2015/05/21 Python
python抓取需要扫微信登陆页面
2019/04/29 Python
python数据挖掘需要学的内容
2019/06/23 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
淘宝秒杀python脚本 扫码登录版
2019/09/19 Python
Python 自由定制表格的实现示例
2020/03/20 Python
python集合能干吗
2020/07/19 Python
高级护理专业毕业生推荐信
2013/12/25 职场文书
洗煤厂厂长岗位职责
2014/01/03 职场文书
应届毕业生求职信范文
2014/07/07 职场文书
2015年学校政教工作总结
2015/07/20 职场文书
安全教育培训制度
2015/08/06 职场文书
会计做账心得体会
2016/01/22 职场文书
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python
mysql sql常用语句大全
2022/06/21 MySQL