关于Linux内核代码不使用typedef的讨论?
C语言关键字 -(typedef关键字)
typedef有点像火隐忍者里面的万花筒写轮眼,用起来非常炫酷有型,使你的代码更加简短,让你穿上你亲妈都认不出你的马甲…
比如这样一段代码
typedef struct point{int x, y;} Points;Points first_point, second_point;
我们定义结构体变量的时候,就不需要再加上 struct 了。
但是这样这样可能会引来一些问题
比如我们一般情况下,我说的是一般情况下,我们会这样使用typedef
typedef unsigned int counter_t;
这样会导致一个问题,我们后面在使用counter_t这个变量的时候,我们不知道这个变量原来是什么类型,比如我需要使用printk的时候,是需要使用%d还是%ld还是%lld呢?
这种不明确性,将会给我们的代码带来风险。
Linus 在一次内核提交里面有评论
这次的内核提交具体讨论如下链接,这个链接不需要fanqiang也可以访问。
http://lkml.iu.edu/hypermail/linux/kernel/0206.1/0402.html
起因如下:
Linus的回复如下:
这里面表达了两个观点
拒绝,注意这里使用了never 这个词,不要让指针成为变量的一部分。
我非常开心,看到这种垃圾代码从内核USB驱动中移除掉了。
第一点,比如我们声明一个指针变量
int *p = NULL;
p就单纯是一个指针变量,我们就知道他是指针变量。
但是使用
typedef struct urb_struct * urbp_t;
urbp_t这个变量,即有了结构体,也有了指针,urbp_t这个变量名字就已经变成错综复杂的存在了。
typedef在内核代码里面就毫无用处了吗?
肯定不是的,内核代码编写规范里面有写了
总结,
自己的代码怎么用都行
一起开发的代码,一定要遵循规范…
PS:想加入技术群的同学,加了我好友后,就给我发「篮球的大肚子」这句话,有可能机器人打瞌睡,可以多发几次,不要发与技术无关的消息或者推广。
如果想获取学习资料,就在公众号后台回复「1024」,足够多的学习资料可以让你学习。
关于Linux内核代码不使用typedef的讨论?相关推荐
- Linux内核代码风格
Linux内核代码风格 这是一个简短的文档,描述了linux内核的首选代码风格.代码风格是因人而异的,而且我不愿意把我的观点强加给任何人,不过这里所讲述的是我必须要维护的代码所遵守的风格,并且我也希望 ...
- Linux 内核代码行数达到 2700 万行量级
来自:技术让梦想更伟大 截止到2020年1月1日09:00:10,Linux内核Git源码树中的代码达到了2780万行. phoronix网站统计了Linux内核在进入2020年时的一些源码数据并作了 ...
- linux 内核编号含义_如何阅读linux内核代码?
阅读代码从来就是不可行的方法,有篇文章详细讲了这个事,很多人都觉得应该多读代码, 读好的代码,比如Donald Knuth. 但事实上, 只要简单让你描述一下最近读了什么代码,绝大多数人都说不上.文章 ...
- linux内核源码只有makefile文件没有c文件,linux内核代码的编写初步以及makefile的配置...
在linux内核代码开发中,头文件不能包含标准C头文件,只能采用GNC标准 而且内核开发中没有main函数,只有init 和 exit ,这是每个内核模块中必须要包含的函数模块. 在GNU C标准中, ...
- 最小的linux内核代码,带你阅读linux内核源码:下载源码、编译内核并运行一个最小系统...
要学习linux内核,先要能够编译内核,还需要了解内核如何启动根文件系统.这样你才能在修改linux内核代码之后,完成验证的过程. 本文教你完成下列过程: 1.下载linux并编译linux内核源码 ...
- 谷歌喊话三星:别再搞 Linux 内核代码了,安卓安全也不保了
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 谷歌 Project Zero 团队表示,三星为阻止 Galaxy 手机遭攻击而修改了内核代码,但实际上引发了更多的安全漏洞. 谷歌安全 ...
- Ubuntu14.04搭建LXR本地服务器阅读Linux内核代码
CSDN GitHub Ubuntu14.04搭建LXR本地服务器阅读Linux内核代码 AderXCoding/system/tools/lxr 本作品采用知识共享署名-非商业性使用-相同方式共享 ...
- Linux内核代码华人贡献统计
http://www.remword.com/kps_result/ 这个站点对Linux内核代码补丁进行了详细的统计,感兴趣的童鞋可以看一下. 在这里给大家看一下2005年4月16日至今各个国家贡献 ...
- LINUX 内核代码备忘录
1. swapper_pg_dir : Global Page Directory (全局页目录,即最顶层页目录,PGD) 的地址 pgd_index(addr): 宏函数,返回PGD包含的项中,地址 ...
最新文章
- 跟我一起做一个vue的小项目(十一)
- mycat1.5~1.6的一个bug
- 不想写脚本清理 mongodb 中的垃圾数据,ttlIndex 能帮到你!
- win10系统:VMware无法在Windows运行该怎么办?
- 查看工作组计算机没有服务器,计算机相关:网上邻居问题:当前工作组的服务器列表无法使用...
- AI与中国未来就业白皮书发布:70%职业受冲击,江浙机器换人大潮汹涌
- 在英特尔® 架构平台上开发和优化基于 NDK 的 Android 游戏应用
- Zookeeper原理分析之存储结构ZkDatabase
- 离散数学第二章(知识点总结)续
- CSS 3 动画 实现图片动态切换
- 计算机一级降序和升序,sql语句降序和升序
- springMVC文件的上传和页面静态化技术
- openwrt luci固件升级流程
- 盛迈坤电商:拼多多推广数据多久会显示
- 剑指chatGPT,马斯克:你们暂停一下,我追赶追赶
- 磁盘存储链式的B树与B+树
- win7 64位 32位旗舰版下载
- python-今日头条
- ps2键盘测试软件,PS2键盘测试程序3
- 1-SII--SharedPreferences完美封装
热门文章
- hdu - 3415 Max Sum of Max-K-sub-sequence
- jquery UI集合
- OCP Java 自测
- java线程实现及线程池的使用
- vscode中安装webpack_VSCode下手动构建webpack项目(示例代码)
- parallels网络初始化失败_33 个神经网络「炼丹」技巧
- 关闭浏览器网页触发事件_浅析浏览器渲染和 script 加载
- 实数是不是python数据类型_python 基本数据类型
- Python第三方库的安装及路径查看总结
- python中交换a和b的值_交换A和B之间的元素以获得和相等