在克隆Linux内核并在VSCode(带有C CPP扩展)中打开例如/drivers/md/dm-zero. c后,在最后3行给了我一个错误:function returning array is not allowed
。
当然,我知道这不应该是一个错误,因为我只是克隆,并没有调整任何东西。C CPP扩展中是否有应设置的设置?
谢谢!
编辑:标题有误导性:我知道这与内核本身无关,但我想说明VSCode会抱怨Linux内核源代码中已经编写的内容
Edit 2:具体错误在这3行:不允许函数返回数组C/C++(91)
MODULE_AUTHOR("Jana Saout <jana@saout.de>");
MODULE_DESCRIPTION(DM_NAME " dummy target returning zeros");
MODULE_LICENSE("GPL");
MODULE_AUTHOR
例如扩展为
#define __MODULE_INFO(tag, name, info) \
static const char __UNIQUE_ID(name)[] \
__used __section(".modinfo") __aligned(1) \
= __MODULE_INFO_PREFIX __stringify(tag) "=" info
我在Ubuntu 20.04中使用GCC
3条答案
按热度按时间ogsagwnx1#
vscode github repo中的这条评论为我解决了这个问题。基本上需要向
c_cpp_properties.json
文件添加一些显式的include路径和编译器参数。ffvjumwh2#
/drivers/md/dm-zero.c
...
在最后3行给我一个错误
我想你是指跟踪吧
这些都是宏,如果你挖掘并寻找它们的定义,它们是绝对有效的。你得到的错误是VSCode及其C/C++扩展(不管是什么)的本地错误,因为它无法找到定义。
kninwzqo3#
我通过在
c_cpp_properties.json
中添加两个define
值来修复这些问题。