我正在使用linux内核的Joystick API编写一些代码。在自述文件的示例中,它说使用这种语法:
struct js_event {
__u32 time;
__s16 value;
__u8 type;
__u8 number;
};
然而,当我使用gcc构建我编写的代码时,会产生错误。我实际上并不知道__u32
部分意味着什么。
然后我用Google搜索了一下,发现了这个
如果包含stdint.h,那么你得到int8_t,uint8_t,int16_t,uint16_t等。它们是标准的C,即使它是较新的,实现较少的标准。如果可以的话,我建议使用stdint.h,因为它比__u8这样的类型更少系统特定。
那么有人可以给我一份新类型列表及其含义吗?同时也是对类型实际具有的角色的缩减。
答案 0 :(得分:2)
__u32
和朋友是<asm/types.h>
中定义的特定于Linux内核的整数类型。
__u32
是无符号的32位整数
__s16
是带符号的16位整数
__u8
是无符号的8位整数,依此类推。
当您使用Linux内核API编写代码时,您不需要关心可移植性,而应该坚持使用Linux API和类型。
请不要忘记
#include <asm/types.h>