无法理解 "error: initializer element is not constant"的含义

标签 c kernel kernel-module

我正在编写一个小型内核模块,专门设计用于使用内核的 key 保留服务访问特定 key 。由于我找不到一个简单的函数来返回给定 ID 的 key 内容,因此我不得不求助于 kernel documentation 中概述的 request_key 。 .

这一行给出了错误:

struct key *my_key = request_key(&key_type_user, "test key", NULL);

我引用了正确的 key 类型,但仍然收到此错误。 security/keys/request_key.c中的函数我的代码应该调用已声明:

 struct key *request_key(struct key_type *type,
                         const char *description,
                         const char *callout_info)

我没有看到任何关于 *type 需要是常量的内容。我读过该错误消息可能与 C 部分关于什么使某些内容“恒定”的虚假广告有关,但我看不出这与上述函数有何关系。有什么帮助吗?

最佳答案

您缺少向我们展示声明的上下文,但从您得到的错误来看,我猜测它在文件范围内,声明了全局。像这样的静态分配对象是在编译时初始化的,因此您不能使用函数调用和其他运行时构造来初始化它。

关于无法理解 "error: initializer element is not constant"的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31015367/

相关文章:

c++ - 在 C++ 中获取指向数组的指针的拷贝

linux-kernel - printk 不适用于内核调试

linux-device-driver - 没有这样的设备或地址——Linux设备驱动开发

c - 管道中传输的数据是垃圾

C一些指针问题

c - 在 C 程序 xCode 中包含 XML 多字符串

c - 为什么只有内核可以切换CPU执行模式?

memory-management - 了解 WoW64 下如何管理内存

c - 内核模块使文件错误

makefile - 编译错误: Kernel module