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


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

Tags in this post...

面试题 相关文章推荐
如何打开WebSphere远程debug
Oct 10 面试题
上海奥佳笔试题面试题
Nov 16 面试题
.net笔试题
Mar 03 面试题
.net工程师笔试题
Jun 09 面试题
广州一家公司的.NET面试题
Jun 11 面试题
如何利用find命令查找文件
Feb 07 面试题
Linux管理员面试经常问道的相关命令
Dec 12 面试题
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Jan 27 面试题
this关键字的作用
Jan 30 面试题
正隆泰信息技术有限公司上机题
Jun 14 面试题
JSF界面控制层技术
Jun 17 面试题
介绍一下Ruby的多线程处理
Feb 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
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
3个PHP多维数组转为一维数组的方法实例
2014/03/13 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
JQuery优缺点分析说明
2011/04/10 Javascript
JavaScript String.replace函数参数实例说明
2013/06/06 Javascript
JS字符串截取函数实例
2013/12/27 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
实例浅析js的this
2016/12/11 Javascript
jQuery基本筛选选择器实例代码
2017/02/06 Javascript
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
JavaScript寄生组合式继承实例详解
2018/01/06 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
Python使用Scrapy爬取妹子图
2015/05/28 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
深入解析Python中函数的参数与作用域
2016/03/20 Python
Python的面向对象编程方式学习笔记
2016/07/12 Python
在python中获取div的文本内容并和想定结果进行对比详解
2019/01/02 Python
详解Python字典的操作
2019/03/04 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
详解Python多线程下的list
2020/07/03 Python
详解CSS3开启硬件加速的使用和坑
2017/08/21 HTML / CSS
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
福克斯租车:Fox Rent A Car
2017/04/13 全球购物
大一学生假期实习的自我评价
2013/10/12 职场文书
高中数学教学反思
2014/01/30 职场文书
2014年中班元旦活动方案
2014/02/14 职场文书
清明节扫墓活动方案
2014/03/02 职场文书
2014年纪检监察工作总结
2014/11/11 职场文书
专家推荐信范文
2015/03/26 职场文书
承诺书怎么写 ?
2019/04/16 职场文书
婚前协议书怎么写,才具有法律效力呢 ?
2019/06/28 职场文书
Android中的Launch Mode详情
2022/06/05 Java/Android