我在VS代码中使用了Microsoft的C/C++扩展.我有这样的代码:

#include <stdio.h>

int main() {
    bool b;
    b = true;
    printf("b is %d\n", b);
    return 0;
}

VS代码true分是一个问题,identifier "true" is undefined分.

我已经正确地设置了我的.vscode/c_cpp_properties.json文件,以使用最新的C标准(其中定义了truefalse).

{
    "version": 4,
    "configurations": [
        {
            "name": "Mac",
            "compilerPath": "/usr/local/Cellar/llvm/17.0.6/bin/clang",
            "cStandard": "c23"
        }
    ]

如果我从命令行编译(使用相同的clang),它将在没有警告的情况下构建,并且程序按预期运行.

/usr/local/Cellar/llvm/17.0.6/bin/clang main.c -o main -std=c2x | ./main

你知道我的问题出在哪里吗?我如何才能让VS Code接受truefalse

推荐答案

这是一个已知的当前问题.见出票C23 features aren't supported #10696.你可以竖起大拇指来表示对它的支持,并提高它的优先顺序.在 compose 本文时,C/C++扩展被阻止,等待EDG解析器(参见thisthis注释).

其中一位C/C++扩展维护人员给出了一个变通办法here:

"true=1""false=0"c_cpp_properties.json中的"defines"数组相加

C++相关问答推荐

如何避免重新分配指针数组时,我们从一开始就不知道确切的大小

有没有更简单的方法从用户那里获取数据类型来计算结果

为静态库做准备中的奇怪行为

如何将常量char*复制到char数组

如何在下面的C代码中正确管理内存?

我的C函数起作用了,但我不确定为什么

如何在VS 2022中正确安装额外的C头文件

使用nmake for程序比Hello World稍微复杂一些

我在反转双向链表时遇到问题

错误...的多个定义(&Q)首先在这里定义&

我在C中运行和调试时得到了不同的输出

为什么我在C代码中得到一个不完整的类型?

哪个首选包含第三个库S头文件?#INCLUDE;文件名或#INCLUDE<;文件名&>?

为什么我在我的代码中得到错误和退出代码-1073741819(0xC0000005),但如果我添加了一个不相关的打印语句,它仍然有效?

浮点正零何时不全为零?

为什么argc和argv即使在主函数之外也能工作?

C中2个数字的加法 - 简单的人类方法

将char*铸造为空**

在 C23 之前如何对空指针使用nullptr?

inline 关键字导致 Clion 中的链接器错误