我正在学习基于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
在新版本中无法识别?
答案 0 :(得分:3)
由于u8
不是标准类型,而uint8_t
是(C99中的typedef和后来的<stdint.h>
)。如果您想使用u8
,请添加包含相应typedef的标头,或在代码中键入dede。