c语言 - 无法理解"error: initializer element is not constant"的含义



我正在编写一个小型内核模块,该模块专为使用内核的密钥保留服务访问特定密钥而设计。由于我找不到一个简单的函数来返回给定ID的键的内容,我不得不求助于内核文档中概述的request_key

这一行给出了错误:

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

我引用了正确的密钥类型,但仍然会出现此错误。security/keys/request_key.c中我的代码应该调用的函数被声明为:

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

我认为*type不需要是常数。我读到错误消息可能与C部分关于是什么使某个东西"恒定"的虚假广告有关,但我看不出这与上述函数有什么关系。有什么帮助吗?

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

如果这一行在声明节中,则它具有初始值设定项的语法,这可能是编译器的抱怨。将紧随其后的任何声明移动到其上方。或者将其拆分:

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

相关内容

最新更新