0
#include<linux/fs.h>
#include<linux/uaccess.h>
#include<linux/slab.h>
#include<linux/gfp.h>
//#include<linux/types.h>

//#include<linux/kernel.h>
//#include<linux/module.h>

char *my_buff = (char*)kmalloc(100,GFP_KERNEL);
char *buff = "Linux Device Drivers programming!";

这是该计划的一部分。我收到一个错误,因为“Initialiser 元素不是常量”。无法弄清楚错误的原因可能是什么。

4

2 回答 2

2

您的变量my_buff在函数范围之外,并且您正在从非常量结果初始化它,即kmalloc. 你不能这样做——你需要my_buff在使用之前调用的某个函数中进行初始化,或者使初始化程序成为编译时常量(这在指针的情况下可能是不可能的,尽管你可能能够将其更改为char my_buff[100])。

于 2013-11-10T09:09:48.517 回答
2

您正在初始化一个静态成员,这意味着编译器需要知道编译时的值是什么。您正在尝试分配一个在编译时编译器不知道但在运行时知道导致错误的值。尝试在如下函数中分配它,

char *my_buff;
main()
{
    my_buff = kmalloc(100,GFP_KERNEL);
    ...
}
于 2013-11-10T09:16:41.367 回答