Я использовал neovim в качестве основной среды разработки для соревновательного программирования с YouCompleteMe в WSL. Но недавно я решил переключиться с WSL на Windows, так как WSL изначально вызывал абсурдную задержку при открытии.
Когда я использовал bits / stdC++. H в качестве заголовочного файла в WSL, все работало нормально, но в Windows YouCompleteMe показывает «Слишком много фатальных ошибок». Однако MinGW может скомпилировать его без каких-либо проблем.
Есть ли способ добавить поддержку бит / stdC++. H в YCM?
PS. Ошибка вызвана YCM, а не компилятором.
Для конкурентного программирования биты / stdC++. H подходят, вы пишете программы, над которыми вам не нужно работать или поддерживать в будущем, и вы можете писать меньше шаблонного кода
Шаг первый: выясните, какие на самом деле заголовки стандартной библиотеки вы используете. Вероятно, их не так много, если вы просто выполняли небольшие упражнения по соревновательному программированию. <iostream>
, <string>
, <algorithm>
, <vector>
- одни из наиболее вероятных, но вы можете найти другие, проверив, какие имена вы используете из пространства имен std::
, и проверив источник, такой как cppreference, чтобы узнать, откуда они на самом деле. Шаг второй: на самом деле используйте их вместо <bits/stdc++.h>
.
@DarioPetrillo Это явно не подходит для этого конкретного спрашивающего, иначе бы этот вопрос не возник.
@Yksisarvinen medium.com/dsc-dypcoe/….
@NathanPierson В соревнованиях по программированию не хватает времени, чтобы увидеть, какой файл заголовка требуется вашей программе. bits / stdC++. h включает в себя весь необходимый файл заголовка, который требуется программе.
@shivanshu "Это не стандартный файл заголовка библиотеки GNU C++, поэтому другие компиляторы, кроме GCC, могут не справиться с его компиляцией." Даже эта статья дает ответ на ваш вопрос. Он не будет работать с компиляторами Microsoft.
@shivanshu - я думаю, что большинство респондентов здесь понимают, что bits/stdc++.h
- это специфичный для компилятора заголовок, который выполняет то, что хотят некоторые люди. Как ясно видно из вопроса, он не переносится. Комментарии здесь относятся к непереносимости.
«До C++ 11 типы данных были обязательными для определения во время компиляции, но позже было введено ключевое слово auto, которое дало нам свободу объявлять переменную во время выполнения». Это не то, что делает ключевое слово auto
. Будьте осторожны, следуя советам из источников, которые В самом деле не знают, о чем они говорят.
@Yksisarvinen Я знаю, что это не стандартный файл заголовка, а только для gcc / g ++, но MinGW основан на gcc, а компилятор даже не вызывает никаких проблем (упомянутых в описании). YCM показывает "Слишком много фатальных ошибок"
@NathanPierson Этот вопрос не требует от вас предложения о том, какие файлы заголовков использовать в соревновательном программировании. Если вы не знаете bits / stdC++. H используется почти для каждого вопроса (кроме вопросов, связанных с временной сложностью) в конкурентном программировании. Также я спрашиваю, как предотвратить отображение ошибки YCM в neovim, поскольку MinGW прекрасно компилирует программу.