解决error: unknown type name ‘__u8’问题,认识__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的大小及作用相关推荐
- NDK编译c包含C++头文件时,出现 error: unknown type name 'class' 的解决方法
在进行native开发的时候,难免会遇到C文件包含C++头文件而调用C++函数,若没做什么处理,直接include进行编译的话,会遇到以下错误: error: unknown type name 'c ...
- 解决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 ...
- 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 ...
- 编译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 ' ...
- 解决: Error: Program type already present: android.support.v4.os.ResultReceiver$MyResultReceiver
解决方法: 在gradle.properties 添加一下代码 android.useAndroidX = true 一般还同时伴随有以下问题: import androidx.databinding ...
- urllib.error.URLError:urlopen error unknown url type:https 解决办法
前言: 在用Python3做爬虫实验的时候报了这个错误:urllib.error.URLError: <urlopen error unknown url type: https> 原因是 ...
- 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 ...
- mysql 还原数据库 unknown command 'b'_mysql数据库还原出错ERROR:Unknown command ‘\\’解决手记...
使用mysql命令行客户端,使用source导入备份文件,但导入中出错, ERROR: Unknown command '\\'. ERROR: Unknown command '\". E ...
- error: unknown file type '.pyx' (from 'pycocotools/_mask.pyx')
在 YOLO v3模型中运用 cocoapi 进行评估模型,安装时报错显示: building 'pycocotools._mask' extension error: unknown file ...
最新文章
- php-cgi占用cpu资源过高的解决方法
- perf报错解决:no symbols found in /bin/dash, maybe install a debug package?和was updated (is prelink enabl
- Git 技术篇 - 本地Git绑定GitHub实现代码云寄存实例演示
- 如何在MyEclipse中添加 用户自定义类库 以及将自定义的类库加入工程的加载目录...
- 一般控制矩阵转能控标准型
- 树存储结构(代码、分析、汇编)
- Scrapy源码阅读分析_1_整体框架和流程介绍
- C语言 rand和srand
- Eigen教程(1)之简介
- 12款免商用中文字体,有谁不爱!(附下载)
- 文档数据库的学习报告
- python word 公式转png图片处理方式
- push rejected by remote
- 软件测试模型有哪些?
- win10怎么在网络里查看win7计算机,win10看不到win7共享电脑怎么办_win10共享发现不了其他电脑的解决方法...
- 使用div制作表格效果
- 深圳实验室装修准备工作
- cmake:基于MDK(Keil)的Nationstech.N32G45x平台交叉编译工具链定义
- 素数(质数),合数 ,偶数 , 奇数 ,约数(因数) ,因子 , 质因子 , 哥德巴赫猜想定义
- C++不知算法系列之解析回溯算法中的人文哲学