我最近决定要尝试SublimeText 3,我发现它非常简洁,插件支持范围广!我最近发现了这个插件:https://github.com/tomv564/LSP,并且正在Clangd中使用它。但是问题是我尝试时遇到的错误会编译。我采取的步骤很简单:
LSP: Enable Language Server Globally
clangd
,然后按enter
启用。C ++文件本身没有什么特别的,我可以在这里发布以确保零歧义:
#include <bits/stdc++.h>
using namespace std;
int main() {
int w, s, c, k;
cin >> w >> s >> c >> k;
bool valid = false;
if (k > s)
valid = true;
else if (k == s)
{
if (w + c < k)
valid = true;
else if (w + c == k)
valid = true;
else if (w == k && c == k)
valid = true;
else if (w + c <= 2 * k)
valid = true;
}
else if (w + c < k)
valid = true;
else if (w + c == k && s <= 2 * k)
valid = true;
cout << (valid ? "YES" : "NO") << endl;
return 0;
}
当我通过WSL与clang++ otherside.cpp
一起实际运行该文件时,该文件就会生成,但是在Sublime.exe中,我遇到的两个错误是:
我认为可以通过解决“ std”错误来解决这三个嵌套子弹,所以我真的不认为这是错误吗?
'bits / stdc ++。h'是我在参加编程比赛时使用的一个包含物,所以我知道它在工作环境中很糟糕,但仍然存在,而且我知道using namespace std
不是“好的做法”,但至少我知道这不是破坏编译的错误。感觉这是一个Clangd问题,但是我知道我过去使用过的带有LSP的IDE,例如Visual Studio和CLion不会报告这两个错误。以前有人解决过这个问题吗?
更新:我实际上花了一些时间通过运行clang++ otherside.cpp
用Clang.exe 构建小cpp文件。我得到了指定的预期错误:“严重错误:找不到'bits / stdc ++。h'文件”但是,在WSL上通过clang++ otherside.cpp
进行编译可以很好地进行编译。因此,似乎Windows和Linux之间存在差异。
我发现我在Windows上需要C / C ++标头。根据:https://clang.llvm.org/get_started.html,建议使用MSys实用程序或GNUWin32。我希望我可以通过WSL使用C / C ++标头,这有可能吗?
Feb.22.19更新:我试图安装MinGW C和C ++编译器来获取Clang的头文件,但是好像我想让Clang查找那些头文件一样,我将不得不从源代码构建Clang并修改名为initHeaderSearch.cpp
。再次,我希望能有更多的解决方案,在其中可以将WSL的C / C ++标头与Clang.exe一起使用。
此外,作为对我的朋友的概念证明,我还在WSL上安装了Sublime,并安装了LSP-Clangd插件,以显示WSL Sublime上没有出现我在Windows上遇到的Clang错误。尽管足够肯定这些错误不会出现在WSL Sublime上,但它提出了一个有趣的观点。也许有一种方法可以在WSL中 start Clangd并将Sublime.exe挂接到那个中?我知道在过去的几年中,WSL取得了长足的发展,其中之一就是AF_UNIX套接字。我对Unix套接字不是最熟悉,是否可以使用它来启动Clangd或与之交互?
答案 0 :(得分:0)
我已经解决了最初的问题。 要明确:我弄清楚了为什么Clangd找不到c ++头文件。我没有不解决如何使用WSL提供的C / C ++标头,也没有解决如何使用unix套接字通过WSL与Clangd进行交互。
我的问题比仅仅缺少stdc++.h
还要深。我一般都缺少所有C / C ++标头。有多种获取这些方法的方法,但是我选择的方法是通过“ Visual Studio Build Tools”安装MSVC。我在这里下载了“ Visual Studio Installer”:https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=15
下载后,我安装了程序并遵循以下两个步骤:
在那之后,LSP插件才对我有用。然后,唯一的问题是“ bits / stdc ++。h”,这是有道理的,因为MSVC是非标准的,因此没有MSVC。我只是用谷歌搜索“ GCC stdc ++。h”,然后找到了我找到的第一个,特别是这个: https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/precompiled/stdc%2B%2B.h并将其放在名为“ bits”的文件夹中,该文件夹与其余C / C ++标头位于同一位置(对我而言,位于此处:C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \ VC \ Tools \ MSVC \ 14.16.27023 \ include)。
最后一点PS:我确实安装了整个工具链,因为我想看看我是否可以拥有所谓的“ Linux无关”功能。我想要一个轻巧的替代Visual Studio的产品,我可以推荐给那些不以Linux为导向的同行(尽管我不得不承认找到使用WSL C / C ++标头的解决方案是我放弃寻找“独立于Linux的东西”。 ”)。获取C / C ++标头的方式有多种,最主要的是安装Visual Studio或MinGW。安装Visual Studio无法达到使用替代方法的目的,而MinGW实际上需要从源代码构建Clang来包含C / C ++标头位置。 MSVC在这里是理想的选择,因为安装它很简单。该解决方案实际上仅增加了我要重现该问题的步骤,并且完成了该程序包并允许相对容易地设置C / C ++的开发环境。这些步骤是: