c++ - VSCode 中的 Gtest,C/C++ 智能感知显示错误
问题描述
我有一个问题,我猜这是由 Microsoft C/C++ 插件引起的。Intellisense 在 Google 测试函数中显示错误,但没有实际错误(测试编译和运行没有任何问题)。
当我将鼠标悬停在带有这些红色错误曲线的函数上时,它会扩展到功能,F12(转到定义)也可以。
如何摆脱这些智能感知“错误”?
我已经尝试搜索错误消息,“intellisense Gtest VSCode”和类似的,但没有找到任何有用的解决方案。我的猜测是我错过了一些东西,但是什么?
还尝试过使用 c_cpp_properties.json (尝试包含 gtest 的确切路径,强制包含实际的 gtest.h 文件等),但也没有运气。
c_cpp_properties.json
这很简单,基本上:
"includePath": [
"${workspaceFolder}/**"
],
一些文件.h
typedef struct {
unsigned short a;
} myStruct;
一些文件.c
myStruct s[5];
unsigned short someFunction(void)
{
// Do stuff
return s[somePosition].a;
}
测试.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/**"
],
推荐阅读
- list - 尝试打开列表时出错:SyntaxError:行继续符后出现意外字符
- azure - 如何查询 azure hdinsight hadoop cluster yarn 时间线服务器
- associations - MyBatis 关联无列
- c++ - MSVC 将仅移动结构参数解释为指针
- php - 在 PHP 中使用 xPath:loadXml 没有正确插入文本
- asp.net - 调用 Excel.Interop 的异常
- node.js - 需要帮助来修复此代码以使用 CrptoJs 或 OpenSSL 命令
- powershell - 在 Powershell 中使用运行空间的网络视图
- php - 通过 wp_insert_post Wordpress 将 ı,ş,ç 等特殊字符保存到数据库中
- ruby-on-rails - 更新模型和 Child 删除 Grandchild :( Rails