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


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

Tags in this post...

面试题 相关文章推荐
介绍一下Cookie和Session及他们之间的区别
Nov 20 面试题
Eclipse面试题
Mar 22 面试题
公司JAVA开发面试题
Apr 02 面试题
请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
Sep 15 面试题
描述内存分配方式以及它们的区别
Oct 15 面试题
深圳-东方伟业笔试部分
Feb 11 面试题
.NET程序员的几道面试题
Jun 01 面试题
GWebs公司笔试题
May 04 面试题
过滤器的用法
Oct 08 面试题
shell的种类有哪些
Apr 15 面试题
Tomcat的缺省是多少,怎么修改
Apr 09 面试题
Delphi CS笔试题
Jan 04 面试题
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制作静态网站的模板框架(四)
2006/10/09 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
document.all与WEB标准
2020/05/13 Javascript
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
jquery 删除字符串最后一个字符的方法解析
2014/02/11 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
基于Vue生产环境部署详解
2017/09/15 Javascript
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
深入理解node.js http模块
2018/01/24 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
实例讲解v-if和v-show的区别
2019/01/31 Javascript
十分钟教你上手ES2020新特性
2020/02/12 Javascript
如何在vue中使用video.js播放m3u8格式的视频
2021/02/01 Vue.js
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
详解Python用三种方式统计词频的方法
2019/07/29 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
单位成立周年感言
2014/01/26 职场文书
公益广告宣传方案
2014/02/28 职场文书
我的长生果教学反思
2014/04/28 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
企业读书活动总结
2014/06/30 职场文书
高中军训的心得体会
2014/09/01 职场文书
2014年自愿离婚协议书范本
2014/09/25 职场文书
企业介绍信范文
2015/01/30 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书
详解Python类和对象内容
2021/06/22 Python
Spring Boot两种全局配置和两种注解的操作方法
2021/06/29 Java/Android