VSCode开发LINUX内核驱动——autoconf.h中宏定义不识别

  • Post author:
  • Post category:linux


由于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中。