uint8_t被识别为数据类型,但u8不是。为什么呢?

时间:2017-02-08 14:00:44

标签: linux linux-kernel c raspbian kernel-module

我正在学习基于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在新版本中无法识别?

1 个答案:

答案 0 :(得分:3)

由于u8不是标准类型,而uint8_t是(C99中的typedef和后来的<stdint.h>)。如果您想使用u8,请添加包含相应typedef的标头,或在代码中键入dede。