uint8_t 被识别为数据类型,但 u8 不是。为什么?
uint8_t is recognized as a data-type but u8 isn't. Why?
我正在学习基于 The Linux Kernel Module Programming Guide
在 Raspbian Jessie 上创建内核模块
目前我在 hello-5.c 部分。我尝试添加 static u8 myByte = 'X';
但无法识别 u8
。然后我将 u8
更改为 uint8_t
这与 AFAIK 相同,并且 uint8_t
被识别为数据类型。
教程的旧版本 here 声明 static u8 myByte = 'X';
,因此我想在较新的教程中重复使用它。
较早的教程包括这些:
#define MODULE
#define LINUX
#define __KERNEL__
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
虽然较新的教程包含这些内容;
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/stat.h>
我试过使用旧的,但是 define
部分会产生错误,所以我使用了较新的教程。
那么,为什么uint8_t
在新版本中可以识别,而u8
不能呢?
因为 u8
不是标准类型,而 uint8_t
是(在 C99 和后来的 <stdint.h>
中有类型定义)。如果您想使用 u8
,请包含一个 header 和适当的 typedef,或者在您的代码中对其进行 typedef。
我正在学习基于 The Linux Kernel Module Programming Guide
在 Raspbian Jessie 上创建内核模块目前我在 hello-5.c 部分。我尝试添加 static u8 myByte = 'X';
但无法识别 u8
。然后我将 u8
更改为 uint8_t
这与 AFAIK 相同,并且 uint8_t
被识别为数据类型。
教程的旧版本 here 声明 static u8 myByte = 'X';
,因此我想在较新的教程中重复使用它。
较早的教程包括这些:
#define MODULE
#define LINUX
#define __KERNEL__
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
虽然较新的教程包含这些内容;
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/stat.h>
我试过使用旧的,但是 define
部分会产生错误,所以我使用了较新的教程。
那么,为什么uint8_t
在新版本中可以识别,而u8
不能呢?
因为 u8
不是标准类型,而 uint8_t
是(在 C99 和后来的 <stdint.h>
中有类型定义)。如果您想使用 u8
,请包含一个 header 和适当的 typedef,或者在您的代码中对其进行 typedef。