首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的头文件不能用VSCode中的clangd正确地索引对方的声明依赖项?

为什么我的头文件不能用VSCode中的clangd正确地索引对方的声明依赖项?
EN

Stack Overflow用户
提问于 2022-08-07 08:25:51
回答 1查看 121关注 0票数 0

我现在在VSCode中用clangd.There编写C/C++是一些恼人的problems.For示例,我在"a.h“中定义了一个变量,它也使用在" b.h ".But中它将在B.H中出错:

“未知类型名称‘xxxxx’‘clang(Unknown_typename)”。

实际上,它并不影响复杂的结果,但总是有很多恼人的红波在那里。

代码语言:javascript
运行
复制
//in "a.h"
typedef unsigned long uint64;
代码语言:javascript
运行
复制
//in "b.h"
uint64 abc; //Error here: (Unknown type name 'uint64'clang(unknown_typename)
代码语言:javascript
运行
复制
//in "xxx.c"
#include "a.h"
#include "b.h"

abc=1; // Correct here

我只使用"complile_commands.json“来配置clangd,运行良好的是,我可以轻松地跳到definition或declaration.Is那里,还有我需要配置的clangd吗?

(PS:这是我的房子)

代码语言:javascript
运行
复制
"clangd.onConfigChanged": "restart",
    "clangd.arguments": [
        "--clang-tidy",
        "--clang-tidy-checks=performance-*,bugprone-*",
        "--compile-commands-dir=${workspaceFolder}/.vscode/",
        "--background-index",
        "--completion-style=detailed",
        "--enable-config",
        "--function-arg-placeholders=false",
        "--all-scopes-completion",
        "--header-insertion-decorators",
        "--header-insertion=never",
        "--log=verbose",
        "--pch-storage=memory",
        "--pretty",
        "--ranking-model=decision_forest",
        "--cross-file-rename",
        "-j=16"
    ],
    "clangd.checkUpdates": false,
EN

Stack Overflow用户

回答已采纳

发布于 2022-08-07 08:41:15

这与VScode或clangd无关。

相反,问题是文件b.h中没有包含a.h,因此uint64在您使用它的地方是未知的-- uint64 abc;

要解决这个问题,您需要在使用a.h之前包含uint64

a.h

代码语言:javascript
运行
复制
#pragma once 
typedef unsigned long uint64;

b.h

代码语言:javascript
运行
复制
#pragma once 
#include "a.h" //added this

uint64 abc;  //works now
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73265936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档