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的讨论?相关推荐

  1. Linux内核代码风格

    Linux内核代码风格 这是一个简短的文档,描述了linux内核的首选代码风格.代码风格是因人而异的,而且我不愿意把我的观点强加给任何人,不过这里所讲述的是我必须要维护的代码所遵守的风格,并且我也希望 ...

  2. Linux 内核代码行数达到 2700 万行量级

    来自:技术让梦想更伟大 截止到2020年1月1日09:00:10,Linux内核Git源码树中的代码达到了2780万行. phoronix网站统计了Linux内核在进入2020年时的一些源码数据并作了 ...

  3. linux 内核编号含义_如何阅读linux内核代码?

    阅读代码从来就是不可行的方法,有篇文章详细讲了这个事,很多人都觉得应该多读代码, 读好的代码,比如Donald Knuth. 但事实上, 只要简单让你描述一下最近读了什么代码,绝大多数人都说不上.文章 ...

  4. linux内核源码只有makefile文件没有c文件,linux内核代码的编写初步以及makefile的配置...

    在linux内核代码开发中,头文件不能包含标准C头文件,只能采用GNC标准 而且内核开发中没有main函数,只有init 和 exit ,这是每个内核模块中必须要包含的函数模块. 在GNU C标准中, ...

  5. 最小的linux内核代码,带你阅读linux内核源码:下载源码、编译内核并运行一个最小系统...

    要学习linux内核,先要能够编译内核,还需要了解内核如何启动根文件系统.这样你才能在修改linux内核代码之后,完成验证的过程. 本文教你完成下列过程: 1.下载linux并编译linux内核源码 ...

  6. 谷歌喊话三星:别再搞 Linux 内核代码了,安卓安全也不保了

    聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 谷歌 Project Zero 团队表示,三星为阻止 Galaxy 手机遭攻击而修改了内核代码,但实际上引发了更多的安全漏洞. 谷歌安全 ...

  7. Ubuntu14.04搭建LXR本地服务器阅读Linux内核代码

    CSDN GitHub Ubuntu14.04搭建LXR本地服务器阅读Linux内核代码 AderXCoding/system/tools/lxr 本作品采用知识共享署名-非商业性使用-相同方式共享 ...

  8. Linux内核代码华人贡献统计

    http://www.remword.com/kps_result/ 这个站点对Linux内核代码补丁进行了详细的统计,感兴趣的童鞋可以看一下. 在这里给大家看一下2005年4月16日至今各个国家贡献 ...

  9. LINUX 内核代码备忘录

    1. swapper_pg_dir : Global Page Directory (全局页目录,即最顶层页目录,PGD) 的地址 pgd_index(addr): 宏函数,返回PGD包含的项中,地址 ...

最新文章

  1. 跟我一起做一个vue的小项目(十一)
  2. mycat1.5~1.6的一个bug
  3. 不想写脚本清理 mongodb 中的垃圾数据,ttlIndex 能帮到你!
  4. win10系统:VMware无法在Windows运行该怎么办?
  5. 查看工作组计算机没有服务器,计算机相关:网上邻居问题:当前工作组的服务器列表无法使用...
  6. AI与中国未来就业白皮书发布:70%职业受冲击,江浙机器换人大潮汹涌
  7. 在英特尔® 架构平台上开发和优化基于 NDK 的 Android 游戏应用
  8. Zookeeper原理分析之存储结构ZkDatabase
  9. 离散数学第二章(知识点总结)续
  10. CSS 3 动画 实现图片动态切换
  11. 计算机一级降序和升序,sql语句降序和升序
  12. springMVC文件的上传和页面静态化技术
  13. openwrt luci固件升级流程
  14. 盛迈坤电商:拼多多推广数据多久会显示
  15. 剑指chatGPT,马斯克:你们暂停一下,我追赶追赶
  16. 磁盘存储链式的B树与B+树
  17. win7 64位 32位旗舰版下载
  18. python-今日头条
  19. ps2键盘测试软件,PS2键盘测试程序3
  20. 1-SII--SharedPreferences完美封装

热门文章

  1. hdu - 3415 Max Sum of Max-K-sub-sequence
  2. jquery UI集合
  3. OCP Java 自测
  4. java线程实现及线程池的使用
  5. vscode中安装webpack_VSCode下手动构建webpack项目(示例代码)
  6. parallels网络初始化失败_33 个神经网络「炼丹」技巧
  7. 关闭浏览器网页触发事件_浅析浏览器渲染和 script 加载
  8. 实数是不是python数据类型_python 基本数据类型
  9. Python第三方库的安装及路径查看总结
  10. python中交换a和b的值_交换A和B之间的元素以获得和相等