由于autoconfig.h没有被内核驱动直接引用,所以VSCode无法建立驱动代码和这些
宏定义
之间的关联关系。即使在autoconfig.h中被定义的宏,在VSCode中也会被错误显示为未定义。解决方法:
1、在VSCode的c_cpp_properties.json中添加全局宏定义。
Ctrl+shift+p打开C/C++编译配置(JSON)
将autoconfig.h中的宏定义由
#define CONFIG_XXX 1
改为
“CONFIG_XXX = 1“,
将宏定义添加到”defines”: []中
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"CONFIG_COMMON_CLK_SCMI = 1",
"CONFIG_RING_BUFFER = 1",
"CONFIG_HAVE_ARCH_SECCOMP_FILTER = 1",
],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "gnu++14",
"intelliSenseMode": "linux-gcc-x64",
"configurationProvider": "ms-vscode.makefile-tools"
}
],
"version": 4
}
2、autoconf.h宏定义批量处理方法
新建一个临时文件tmp.h,将autoconf.h内容全部复制进去。将tmp.h中的注释删掉,选中
#define
,右键->更改所有匹配项,然后
Ctrl+方向键→
按字符串个数向右移动。
-
移动到在CONFIG_XXX 后加上
=
-
移动到行尾加上
“,
-
移动到行首删除
#define
-
字符串的宏定义需要单独处理,在引号前加上
\
,
然后全部复制,放到c_cpp_properties.json的defines中。