为什么extern声明应该在.c文件之外(根据linux编码样式)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为什么extern声明应该在.c文件之外(根据linux编码样式),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1187字,纯文字阅读大概需要2分钟。
内容图文
![为什么extern声明应该在.c文件之外(根据linux编码样式)](/upload/InfoBanner/zyjiaocheng/948/6a6bd251dc7445679868846021a671f3.jpg)
根据checkpatch.pl脚本“外部声明在.c文件外部”
(用于检查补丁是否遵循编码风格)
注意:这在没有编译警告的情况下工作得很好
通过将extern声明放在.h文件中,可以解决此问题.
a.c
-----
int x;
...
b.c
----
extern int x;
==> checkpatch抱怨
a.h
-----
extern int x;
a.c
----
int x;
b.c
----
#include "a.h"
==>不抱怨
我想了解为什么这更好
我的猜测.
理想情况下,将代码拆分为文件,以便对代码进行模块化(每个文件都是一个模块)
模块导出的接口放置在头文件中,以便其他模块(或.c文件)可以包括它们.因此,如果任何模块要在外部公开某些变量,则必须在与该模块相对应的Header文件中添加extern声明.
同样,具有与每个模块相对应的头文件(.c文件)似乎
到许多头文件.
解决方法:
在a.c文件中也包含a.h甚至会更好.这样,编译器可以验证声明和定义是否匹配.
a.h
-----
extern int x;
a.c
----
#include "a.h" <<--- add this
int x;
b.c
----
#include "a.h"
正如您所假设的那样,该规则的原因是我们应该使用编译器来检查我们在做什么.细微的细节要好得多.
如果我们允许在各处使用extern声明,那么如果我们想将x更改为其他类型,就会遇到麻烦.我们必须扫描多少个.c文件才能找到所有extern int x?很多.如果这样做,我们可能还会发现一些extern char x错误.糟糕!
仅在头文件中包含一个声明,并在需要的地方包含它,为我们节省了很多麻烦.在任何实际项目中,x始终不是头文件中的唯一元素,因此您不必节省文件数.
内容总结
以上是互联网集市为您收集整理的为什么extern声明应该在.c文件之外(根据linux编码样式)全部内容,希望文章能够帮你解决为什么extern声明应该在.c文件之外(根据linux编码样式)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。