【发布时间】:2021-06-08 13:04:29
【问题描述】:
我有两个从同一源(客户端和服务器)构建的可执行文件,它们使用编译选项-D CLIENT=0 -D SERVER=1 用于服务器,-D CLIENT=1 -D SERVER=0 用于客户端。如果我做类似的事情
if (CLIENT) {
// Client specific code
}
clangd 抱怨没有定义 CLIENT。有没有办法让 clangd 知道这些宏? (代码编译得很好,错误来自clangd,而不是编译器)
【问题讨论】:
-
是的,
clang编译得很好,问题出在语言服务器clangd上 -
我建议使用
#ifdef CLIENT或#if CLIENT,而不是可能在运行时评估的if (CLIENT),具体取决于优化设置 -
这不是使用编译时配置的最佳方式。你最好使用预处理器
#ifdef/ifndef指令来有条件地编译特定的代码部分。 -
我发现
if (CLIENT)更易于阅读,如果可以,我会使用它。无论如何,它肯定会被任何现代编译器优化