在内核中,使用的数据类型基本上分为三类:标准C语言类型、确定变量大小的类型、接口特定类型。在编写驱动程序时,涉及到可移植的部分,要格外注意数据类型的使用。
1 标准C语言类型
即为C99标准定义的数据类型(2011.12发布新的标准C11);这些数据类型在不同的体系架构中占用的空间大小可能并不相同。因此使用时,需小心。
定义数据类型如下:
即为C99标准定义的数据类型(2011.12发布新的标准C11);这些数据类型在不同的体系架构中占用的空间大小可能并不相同。因此使用时,需小心。
定义数据类型如下:
| 关键字 | 位长(字节) | 格式化字符串 | 关键字 | 位长(字节) | 格式化字符串 |
| char | 1 | %c | signed short | 2 |
|
| unsigned char | 1 |
|
long int |
4或 8 |
%li,%ld |
| signed char | 1 |
|
unsigned long |
4或 8 |
%lu |
| int |
2(16位系统)或 4 |
%i,%d | signed long |
4或 8 |
|
| unsigned int |
2或 4 |
%u | long long | 8 | %lli |
| signed int |
2或 4 |
%i,%d | unsigned long long | 8 | %llu |
| short int | 2 | %hi | float | 4 | %f,%e,%g |
| unsigned short | 2 | %hu | double | 8 | %f,%e,%g |
|
|
|
|
long double | 8或以上 | %Lf,%Le,%Lg |
2 确定变量大小的类型
此变量类型在"
-
u8; /* 无符号8位值 */
-
u16; /* 无符号16位值 */
-
u32; /* 无符号32位值 */
- u64; /* 无符号64位值 */
3 接口特定类型
"接口特定"是指由某个库定义的一种数据类型,以便为某个特定的数据结构提供接口.(引用ldd3)
像"*_t"类型,比如pid_t,size_t等等。