1、解决Linux error: unknown type name ‘__u8’问题:
内核提供的数据类型都在头文件<asm/types.h>声明,可以在程序中加上#include <asm/types.h>头文件。详细类型可参考
https://www.linuxidc.com/Linux/2011-06/37157.htm
2、认识__u8,__u16,__u32,__u64的大小及作用:
作者:时国怀
链接:https://www.zhihu.com/question/23223900/answer/23969589
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

驱动开发的原则:

能用__u32就最好用它,或者用u_int32_t之类的也可以,但不要直接用unsigned int等默认的数据类型。目的是让别人明白,你这个变量占多大内存

原因:

你不能确定你的代码未来只在一个平台上运行,它可能会被移植到非Linux平台(确实有很多人这么做),它可能运行在不同的CPU平台,比如64位环境,非x86环境。

因为C语言中并未明确规定int一定要占多少字节,只是规定了long >= int >= short,所以__u32就是告诉别人,这变量占4字节。

同样的:__iomem也是能加就加,这样当你的驱动被别人维护的时候,别人会明白,这块内存是用于IO的,可DMA的,而不是paged-memory。

说到底,这是一种良好的编码风格,确实,不加这些东西,对于编译和运行来说,可能是无任何影响的,但是,不写注释的代码一样也对编译和运行无影响,你敢一句注释都不写吗?

--------------------------------------

驱动中使用哪种类型最标准,这个没有正确答案,但建议是不使用C语言原始的数据类型(char/short/int/long),而是使用有明确字节大小的数据类型(u_int32_t/__u32/uint32_t/DWORD/UINT32均可)。保持代码风格的一致性即可。

Linux社区提倡开放,并不严格限制开发者必须用哪种类型,一切都只是建议使用

但有一种情况是例外的:开发标准库函数,比如自己实现strlen,那么返回值就必须是size_t,因为标准库是标准的。


解决error: unknown type name ‘__u8’问题,认识__u8,__u16,__u32,__u64的大小及作用相关推荐

  1. NDK编译c包含C++头文件时,出现 error: unknown type name 'class' 的解决方法

    在进行native开发的时候,难免会遇到C文件包含C++头文件而调用C++函数,若没做什么处理,直接include进行编译的话,会遇到以下错误: error: unknown type name 'c ...

  2. 解决KIEL编译CW32实验例程报“.\Objects\GPIO.axf“ - 3 Error(s), 55 Warning(s).其中error: unknown type name ‘__weak

    编译完整错误为: ../Libraries/src/cw32f030_systick.c(63): error: unknown type name '__weak' __weak void Init ...

  3. avisynth_c.h:825:3: error: unknown type name ‘HMODULE’

    avisynth_c.h:825:3: error: unknown type name 'HMODULE' In file included from input/avs.c:49:0: ./ext ...

  4. 编译x264:avisynth_c.h:825:3: error: unknown type name ‘HMODULE‘

    具体错误 In file included from input/avs.c:49:0: ./extras/avisynth_c.h:825:3: error: unknown type name ' ...

  5. 解决: Error: Program type already present: android.support.v4.os.ResultReceiver$MyResultReceiver

    解决方法: 在gradle.properties 添加一下代码 android.useAndroidX = true 一般还同时伴随有以下问题: import androidx.databinding ...

  6. urllib.error.URLError:urlopen error unknown url type:https 解决办法

    前言: 在用Python3做爬虫实验的时候报了这个错误:urllib.error.URLError: <urlopen error unknown url type: https> 原因是 ...

  7. stm32f4xx_it.c: Error: C3065E: type of input file 'DRIVER' unknown 解决办法

    stm32f4xx_it.c: Error: C3065E: type of input file 'DRIVER' unknown misc.c: Error: C3065E: type of in ...

  8. mysql 还原数据库 unknown command 'b'_mysql数据库还原出错ERROR:Unknown command ‘\\’解决手记...

    使用mysql命令行客户端,使用source导入备份文件,但导入中出错, ERROR: Unknown command '\\'. ERROR: Unknown command '\". E ...

  9. error: unknown file type '.pyx' (from 'pycocotools/_mask.pyx')

      在 YOLO v3模型中运用 cocoapi 进行评估模型,安装时报错显示: building 'pycocotools._mask' extension error: unknown file ...

最新文章

  1. php-cgi占用cpu资源过高的解决方法
  2. perf报错解决:no symbols found in /bin/dash, maybe install a debug package?和was updated (is prelink enabl
  3. Git 技术篇 - 本地Git绑定GitHub实现代码云寄存实例演示
  4. 如何在MyEclipse中添加 用户自定义类库 以及将自定义的类库加入工程的加载目录...
  5. 一般控制矩阵转能控标准型
  6. 树存储结构(代码、分析、汇编)
  7. Scrapy源码阅读分析_1_整体框架和流程介绍
  8. C语言 rand和srand
  9. Eigen教程(1)之简介
  10. 12款免商用中文字体,有谁不爱!(附下载)
  11. 文档数据库的学习报告
  12. python word 公式转png图片处理方式
  13. push rejected by remote
  14. 软件测试模型有哪些?
  15. win10怎么在网络里查看win7计算机,win10看不到win7共享电脑怎么办_win10共享发现不了其他电脑的解决方法...
  16. 使用div制作表格效果
  17. 深圳实验室装修准备工作
  18. cmake:基于MDK(Keil)的Nationstech.N32G45x平台交叉编译工具链定义
  19. 素数(质数),合数 ,偶数 , 奇数 ,约数(因数) ,因子 , 质因子 , 哥德巴赫猜想定义
  20. C++不知算法系列之解析回溯算法中的人文哲学

热门文章

  1. 北京市2009年住房建设计划
  2. 实现商品分类和品牌管理功能
  3. ispring 软件改变PDF阅读困难,电子书轻松阅读!
  4. ALM系统如何通过容器管理物件(以Polarion为例)
  5. Linux运维07:free命令详解
  6. 深度融合信息化 视频监控打击震慑犯罪
  7. 杨震霆(carboy) -传奇人物
  8. 虚拟天文台主节点成功上云
  9. 解决方案:Java对DateTime的处理
  10. [附源码]java毕业设计哈金院食堂美食评价系统