VSCode、C/C++ 智能感知中的 Gtest 显示错误

Gtest in VSCode, C/C++ intellisense shows errors

我有一个问题,我猜这是由 Microsoft C/C++ 插件引起的。 Intellisense 在 Google 测试函数中显示错误,但没有实际错误(测试编译和 运行 没有任何问题)。

当我将鼠标悬停在带有这些红色错误波浪线的函数上时,它会扩展到功能,F12(转到定义)也可以正常工作。

如何消除这些智能感知“错误”?

我尝试搜索错误消息,“intellisense Gtest VSCode”和类似的,但没有找到任何有用的解决方案。我猜我错过了什么,但是什么?

也试过 c_cpp_properties.json(试图包含 gtest 的确切路径,强制包含实际的 gtest.h 文件等)但也没有运气。

c_cpp_properties.json

很简单,基本上:

"includePath": [
    "${workspaceFolder}/**"
],

somefile.h

typedef struct {
    unsigned short a;
} myStruct;

somefile.c

myStruct s[5];

unsigned short someFunction(void)
{
    // Do stuff
    return s[somePosition].a;
}

test.cpp

#include "gtest/gtest.h"

extern "C" {
    #include "somefile.h"
    extern myStruct s[];
}

TEST(someTest, firstTest)
{
    EXPECT_EQ(s[somePosition].a, someFunction());
}

INSTANTIATE_TEST_CASE_P(someFunction, secondTest,
    testing::Values(
        some_test{ "hello", 0 },
        some_test{ "bye", 1 }
));

VSCode C/C++ 智能感知输出

firstTest,EXPECT_EQ 错误:

expression must have bool type (or be convertible to bool)C/C++(711)

secondTest,错误在 INSTANTIATE_TEST_CASE_P:

namespace "std" has no member "string"C/C++(135)

通过编辑 c_cpp_properties.json:

解决了
"includePath": [
    "${workspaceFolder}/**",
    "${workspaceFolder}/Tests/packages/Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.1/build/native/include/**"
],