在 VSCode 中使用 ifdef 语句进行 C 代码

问题描述 投票:0回答:1

C 项目中有多个 #ifdef 语句。所有这些 #ifdef 都在名为 .cproject 的文件中定义。 “Eclipse”IDE 使用此 .cproject 文件并突出显示 #ifdef 下未使用的代码。

这在 VSCODE 中不会发生。 我注意到,虽然某些 #ifdef 是 true 并且其下的代码正在项目中使用,但 VSCODE 将它们显示为未使用(稍微显示它们)。

我想知道是否有办法确保 VSCODE 显示/突出显示 C-Project 中使用的正确 #ifdef 参数。

.cproject 文件是一个 .xml 文件,项目中使用的所有 #ifdef 都在其中定义。 我可以在 VSCODE 中以某种方式使用该文件还是有其他方法可以做到这一点?

c visual-studio-code intellisense
1个回答
0
投票

*** 这是假设您正在使用 Microsoft 的 VSCode C/C++ 扩展

您可以在

#ifdef
文件(项目目录中)中定义由
.vscode/c_cpp_properties.json
指令检查的符号,也可以通过
> C/C++: Edit Configurations
命令访问。

文件的结构是这样的:

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "FOO"
            ],
            "cppStandard": "gnu++14",
            "intelliSenseMode": "linux-gcc-x64"
        },
        {
            "name": "WSL",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "BAR"
            ],
            "cppStandard": "gnu++14",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

您要定义的符号位于

"defines"
字符串数组下(对于上述两种配置,
FOO
BAR
)..

请记住,这些定义仅影响 IntelliSense 行为,它不会为编译器/预处理器定义这些符号!如果您想为编译器/预处理器定义这些,您将需要在其他地方进行。

以下是完整文档供您参考:
https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference

以及具体摘录:

defines
- IntelliSense 引擎在解析文件时使用的预处理器定义列表。或者,使用
=
设置一个值,例如
VERSION=1

© www.soinside.com 2019 - 2024. All rights reserved.