0

我正在使用 linux 内核的 Joystick API 编写一些代码。在自述文件中的示例中,它说要使用以下语法:

    struct js_event {
    __u32 time;  
    __s16 value;   
    __u8 type;   
    __u8 number;    
};

然而,当我使用 gcc 构建我编写的代码时,会产生错误。我实际上不知道这__u32部分是什么意思。然后我用谷歌搜索了一下,发现了这个

如果包含 stdint.h,那么你会得到 int8_t、uint8_t、int16_t、uint16_t 等。它们是标准 C,即使它是更新的、实施较少的标准。如果可以的话,我建议使用 stdint.h,因为它不像 __u8 这样的类型特定于系统。

那么有人可以给我一份新类型的列表以及它们的含义吗?还介绍了类型实际具有的角色。

4

1 回答 1

2

__u32<asm/types.h>和朋友是特定于 Linux 内核的整数类型。

__u32是一个无符号的 32 位整数。
__s16是一个有符号的 16 位整数。
__u8是一个无符号的 8 位整数,依此类推。

当您使用 Linux 内核 API 编写代码时,您不需要关心可移植性,并且应该坚持使用 Linux API 和类型。

只是不要忘记

#include <asm/types.h>

另请参阅头文件中指向 __u32 的指针

于 2013-11-04T18:19:58.587 回答