Я недавно решил, что хочу попробовать SublimeText 3, и я нахожу его очень аккуратным, поддержка плагинов огромна!Я недавно нашел этот плагин: https://github.com/tomv564/LSP, и я использую его с Clangd.Проблема в том, что ошибки, которые я получаю, я знаю, компилируются, как я пытался.Шаги, которые я предпринял, были просты:
- Установить Sublime: https://download.sublimetext.com/Sublime%20Text%20Build%203176%20x64%20Setup.exe
- Установить предварительно собранный двоичный файл CLang.exe для Windows: https://releases.llvm.org/7.0.1/LLVM-7.0.1-win64.exe
- Перезагрузить компьютер(поэтому может иметь место новая модификация PATH среды Windows).
- Установить LSP из управления пакетами
- введите
LSP: Enable Language Server Globally
в командную палитру - введите
clangd
в последующуюЧтобы включить окно, нажмите enter
. - Перезапустите Sublime и откройте файл C ++.
Сам файл 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;
}
Этот файл создается, когда я фактически запускаю его с clang++ otherside.cpp
через WSL, но в Sublime.exe, две ошибки, которые я получаю:
- 'бит / stdc ++. h 'файл не найден
- с использованием директивы относится к неявно определенному пространству имен' std '
- использование необъявленного идентификатора' cin '
- использование необъявленного идентификатора'cout '
- использование необъявленного идентификатора' endl '
Три вложенных маркера, которые, я полагаю, будут решены с помощью решения ошибки 'std', поэтому я не думаю, что они являются ошибками?
'bits / stdc ++. H' является включениемЯ использую, когда участвую в соревнованиях по программированию, поэтому я знаю, что он существует, несмотря на то, что он плох на рабочем месте, и я знаю, что using namespace std
- это не «хорошая практика», но, по крайней мере, я знаю, что это не ошибка, которая нарушает компиляцию.Такое ощущение, что это проблема Clangd, но я знаю, что IDE с LSP, который я использовал в прошлом, например Visual Studio и CLion, не сообщает об этих двух ошибках.Кто-нибудь еще решал эту проблему раньше?
ОБНОВЛЕНИЕ: я действительно потратил время на сборку небольшого файла cpp с Clang.exe, запустив clang++ otherside.cpp
.Я получил ожидаемую ошибку, указав: «Неустранимая ошибка:« бит / файл stdc ++. H »не найден».Похоже, что существует несоответствие между Windows и Linux.
Я понял, что мне нужны заголовки C / C ++ в Windows.Согласно: https://clang.llvm.org/get_started.html, рекомендуется использовать утилиты MSys или GNUWin32.Я надеялся, что смогу использовать заголовки C / C ++ через WSL, разве это возможно?
Feb.22.19 ОБНОВЛЕНИЕ: Я попытался установить компиляторы MinGW C и C ++, чтобы получить заголовки для Clang, но похоже, чтоесли я хочу, чтобы Clang нашел эти заголовки, мне нужно будет собрать Clang из исходного кода и изменить что-то под названием initHeaderSearch.cpp
.Опять же, я надеюсь на большее решение, в котором я мог бы использовать заголовки WSL C / C ++ с Clang.exe.
Кроме того, в качестве подтверждения концепции моему другу, я также установил Sublime на WSL,и установил плагин LSP-Clangd, чтобы показать, что ни одна из ошибок Clang, которые я получаю в Windows, не появлялась в WSL Sublime.Хотя в WSL Sublime ошибки не появлялись, все же возник интересный момент.Может быть, есть способ запустить Clangd в WSL и вместо этого подключить Sublime.exe к , что ?Я знаю, что за последние несколько лет WSL сделал все возможное, и одной из вещей, которые из этого вышли, были сокеты AF_UNIX.Я не очень знаком с сокетами Unix, можно ли использовать это для запуска или взаимодействия с Clangd?