让 clangd 了解编译器给出的宏

2023-12-20

我有两个从同一源(客户端和服务器)构建的可执行文件,并且它们是使用编译选项构建的-D CLIENT=0 -D SERVER=1对于服务器和-D CLIENT=1 -D SERVER=0为客户。如果我做类似的事情

if (CLIENT) {
// Client specific code
}

clangd 抱怨 CLIENT 未定义。有没有办法让 clangd 知道这些宏? (代码编译得很好,错误来自clangd,而不是编译器)


有没有办法让 clangd 知道这些宏?

From 开始使用 clangd https://releases.llvm.org/9.0.0/tools/clang/tools/extra/docs/clangd/Installation.html#project-setup:

项目设置

要理解项目中的源代码,clangd 需要知道 建立旗帜。 (这只是 C++ 中的一个事实,源文件不是 独立的。)

默认情况下,clangd 会假设源代码是​​作为 clang 构建的 some_file.cc,您可能会收到有关丢失的虚假错误 #included 文件等。有几种方法可以解决这个问题。

编译命令.json

compile_commands.json 文件提供所有源的编译命令 项目中的文件。该文件通常由构建生成 系统,或与构建系统集成的工具。 Clangd 会看 将此文件放在您编辑的文件的父目录中。其他 工具也可以生成此文件。请参阅compile_commands.json 规格。

compile_commands.json通常使用 CMake 构建系统生成,但更多构建系统尝试生成它。

我建议将你的项目转移到 CMake,在这个过程中你将学习这个工具,它肯定会帮助你进一步的 C-ish 开发。

编译标志.txt

如果项目中的所有文件都使用相同的构建标志,您可以将这些文件 flags,每行一个标志,位于源根目录下的compile_flags.txt中。

Clangd 将假定编译命令是 clang $FLAGS some_file.cc。

手动创建此文件是一个合理的起点,如果您 项目非常简单。

如果不转向 cmake,请创建一个compile_flags.txt文件的内容例如如下所示,并且clangd应该选择这个文件:

-DCLIENT=1
-DSERVER=1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

让 clangd 了解编译器给出的宏 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 在 Asp Mvc 网站中显示默认路由的完整 url

    我想当有人导航到我网站的根目录时显示完整的 URL 如果他们导航到 www mysite com 默认路由会正确处理它并显示正确的页面 问题是浏览器中的 URL 显示为 www mysite com 而不是 www mysite com u
  • 如何在不影响 MySQL 数据库的情况下跟踪页面浏览量

    我正在尝试使用以下查询跟踪 MySQL DB 中的页面浏览量 UPDATE table SET pageviews pageviews 1 WHERE page id 1 这对于中低流量来说是很好的 然而 在高流量下 对数据库的持续写入将导
  • glTexImage2D完成上传时如何收到通知?

    我想在纹理上传到 OpenGL 后进行渲染 但我无法收到有关完成的通知 我确实想避免使用动画或任何类型的重复渲染 glTexImage2D 到底是异步的吗 据我所知 几乎每个 OpenGL 调用都是异步的 无论如何 如果我也能知道 glDr
  • IoC 容器示例 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Pytest 运行文档测试和普通测试

    在我的 Python 项目中 我使用 Pytest 目录结构为 src docs test 我有不同类型的测试 正常测试 在test 源代码中的文档测试 src 文档中的文档测试 docs rst 狮身人面像 我想一次运行所有这些 这样我就
  • 在magento布局xml中使用条件

    想知道是否有人在 magento 的布局 XML 中为自定义模块使用过 or 语句 我意识到我可以检查模块控制器或块本身中的值 但它似乎是逻辑所在的逻辑位置 Mage Core 将它们用于catalog xml测试 JavaScript 谢
  • 是否将可重入锁设为静态并使其成为互斥锁?

    在 Brian Goetz 的 Java Concurrency in Practice 一书中 他的可重入锁示例的编程如下 Lock lock new ReentrantLock 但是 我很好奇是否将上面的代码更改为 private st
  • 在现有pdf中的itext中追加数据

    我正在与文本 pdf图书馆 我想在现有 pdf 的末尾添加内容 举例来说 现有的 pdf 例如 Original pdf 有 4 页 所以我想添加另一页 即第 5 页的内容你好世界我添加了内容并将其保存在同一个 pdf 中 即原件 pdf
  • 切换 WordPress 站点服务器

    我有 WordPress 博客 最近我改变了我的托管 所以我用 filezilla 从旧服务器下载了所有博客文件 在新服务器上 我创建了目录博客 并在该目录下上传了所有文件 我在新服务器上创建了与旧服务器完全相同的新数据库并上传了该数据库
  • Google Play 商店,无法再查看总安装量

    我在 Google Play 商店上有一些应用程序 并使用总安装数作为我的增长计划的一部分 然而 自 2018 年 7 月 16 日起 我无法再在控制台中看到 总安装数 它仅显示 活动安装 谷歌刚刚从游戏商店中删除了最重要的数字之一吗 我还
  • 如何在 Rails 3 的控制器中使用 mixin 或模块?

    我的控制器中有一些行为 我将其提取到模块中 以便更好地测试并在一些地方重复使用它 对此有两个问题 哪里是放置我的模块的好地方 它们需要运行才能可供控制器使用 所以我在想config initializers 目录 不过 这对我来说似乎有点可
  • TextArea 的 JavaFX CSS 样式不起作用

    我正在编写一个简单的 JavaFX 应用程序 但我无法使用某些 CSS 样式 问题是 fx background color财产给我的TextArea 这是相关的CSS text area fx font family Consolas f
  • “numeric_limits”未在此范围内声明,没有匹配的函数可用于调用“max()”

    我在家里用 xcode 在我的 mac 上编译了这段代码 没有出现任何问题 我在学校用 g 在 Linux 上编译它 并收到以下错误 numeric limits 不是 std 的成员 gt 标记之前的预期主要表达式 没有匹配的函数来调用
  • F#代码引用调用、性能和运行时要求

    这里有 4 个与 F 代码引用深度相关的问题 如何调用 F 代码引用 它的调用方式是否会比普通的旧式 F lambda 效率低 到什么程度 它是否需要对高级反射或代码发出功能的运行时支持 我的目标嵌入式平台通常不存在或禁止这种功能 引文只是
  • 需要SDK版本 >=2.16.0 <3.0.0,版本解析失败

    当前的 Dart SDK 版本是 2 14 4 由于trackkit要求SDK版本 gt 2 16 0 我的 pubspec yaml environment sdk gt 2 16 0 lt 3 0 0 运行 flutter master
  • 在 Three.js 中高效渲染数以万计的可变大小/颜色/位置的球体?

    这个问题是从我的上一个问题中提炼出来的 我发现使用积分会导致问题 https stackoverflow com a 60306638 4749956 https stackoverflow com a 60306638 4749956 为
  • 在android中创建矩形边框进度条

    我想创建一个进度条 应如上图所示 有人有一个想法可以做到这一点 就像一个按钮 但边框就像一个进度条 Thanks 我在这个的帮助下解决了 如何创建 Android 钻石进度条 https stackoverflow com question
  • 在后台线程中运行处理程序消息

    我想在后台线程中运行一些 Runnable 我想使用Handler 因为它方便延迟 我的意思是 handler post runnable delay Where runnable应该运行在背景线 是否可以创建这样的Handler 某处是否
  • 通过快捷键激活扩展

    是否可以通过快捷键打开 启动 google chrome 扩展 例如 我想分配一个快捷方式 比如说 CTRL E打开我的扩展并启动它 以前有人这样做过吗 UPDATE
  • 让 clangd 了解编译器给出的宏

    我有两个从同一源 客户端和服务器 构建的可执行文件 并且它们是使用编译选项构建的 D CLIENT 0 D SERVER 1对于服务器和 D CLIENT 1 D SERVER 0为客户 如果我做类似的事情 if CLIENT Client