Как подключить bits stdc h в visual studio
В какой-то статье я увидел, что "заголовочный файл не является частью стандарта С++, поэтому он не переносится", и его следует избегать ". Но я думаю, что это полезно в программировании соревнований.
Это не стандартный заголовок. Не полагайтесь на детали реализации. Если вам действительно нужен заголовок, который включает в себя все остальные (вы действительно этого не хотите), используйте свой собственный.
Я бы использовал свой собственный, но он не будет распознаваться на популярных сайтах OJ, таких как uva, loj и т. Д. Кроме того, почему он не работает в VS2013? Просто хочу знать, как это работает в кодовых блоках.
2 ответа
Есть ли способ избежать этой ошибки?
Да: не используйте нестандартные файлы заголовков, которые предоставляются только GCC, а не компилятором Microsoft.
Существует несколько заголовков, которые стандарт С++ требует, чтобы каждый компилятор предоставлял, например и . Но конкретная реализация компилятора этих заголовков может основываться на других нестандартных заголовках, которые также поставляются вместе с этим компилятором, и является одним из них.
Подумайте о стандартных заголовках (например, ) в качестве "общедоступного" интерфейса и материала, специфичного для компилятора (например, все в bits/ ) в качестве реализации "private". Вы не должны полагаться на детали реализации компилятора, если вы хотите, чтобы ваша программа была переносимой для других компиляторов - или даже будущих версий одного и того же компилятора.
Если вы хотите заголовок, который включает в себя все стандартные заголовки, достаточно просто написать свой собственный.
Это просто метод, который я использовал, чтобы я мог включать биты /stdc++.h
в визуальном c++.
для тех, кто установил MinGW на ПК:
C:\MinGW\mingw32\Lib\GCC\mingw32\4.8.1\Include\c++\mingw32\бит
скопируйте эту папку и затем перейдите по этому адресу
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include
Вставьте свою папку. перейти к вашей визуальной студии типа битов проекта, которые вы увидите
автозаполнение для библиотеки и затем выберите stdc++.h
для тех, у кого нет minGW:
Вы должны написать свой собственный заголовочный файл и включить в него все библиотеки, затем перейти в C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include, создать новую папку, назвать ее "битами" и назвать файл заголовка stdc++. Затем вставьте его в папку "биты".
Я видел в каком-то посте, что «файл заголовка не является частью стандарта C ++, поэтому не переносится» и его следует избегать ». Но я думаю, что это полезно в соревновательном программировании.
Есть ли способ избежать этой ошибки?
Да: не используйте нестандартные файлы заголовков, которые предоставляются только GCC, а не компилятором Microsoft.
Существует ряд заголовков, которые стандарт C ++ требует от каждого компилятора, например и . Но реализация этих заголовков в конкретном компиляторе может полагаться на другие нестандартные заголовки, которые также поставляются с этим компилятором, и является одним из них.
Думайте о стандартных заголовках (например, ) как об «общедоступном» интерфейсе, а о материалах, зависящих от компилятора (как и все в bits/ ), как о «частной» реализации. Вам не следует полагаться на детали реализации, специфичные для компилятора, если вы хотите, чтобы ваша программа была переносимой для других компиляторов - или даже для будущих версий того же компилятора.
Если вам нужен заголовок, включающий все стандартные заголовки, достаточно легко написать свой собственный.
Установите последнюю версию MinGW. Вот версия 6.3.0. Найдите руководство по установке здесь.
Затем скопируйте папку бит из . C: \ MinGW \ lib \ gcc \ mingw32 \ 6.3.0 \ include \ c ++ \ mingw32 \ bits
В . (VS2019) C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ VC \ Tools \ MSVC \ 14.27.29110 \ include
Обратите внимание, что это будет «Сообщество» / «Профессионал» в зависимости от установки VS и лицензирования.
Я отвечу за Enterprise 2015, версия 4.8.03761, обновление 3.
Когда вы устанавливали кодовые блоки, также был установлен MinGW ((Min) минималистичный (G) Сборник компиляторов GNU (GCC) для (W) Windows). Или вы можете установить его отдельно.
Я считаю, что эта проблема связана с тем, что Visual Studio не может найти биты / stdc ++. H в своем каталоге Include (Project -> YourProject Properties -> Configuration Properties -> VC ++ Directories -> Include Directories -> нажмите стрелку раскрывающегося списка -> -> Оценочное значение).
Вам нужно перейти в этот каталог и вставить всю папку бит из вашей установки MinGW, моя была в (C: \ MinGW \ lib \ gcc \ mingw32 \ 8.2.0 \ include \ c ++ \ mingw32).
Когда это было сделано, с моей стороны не было никаких ошибок. Надеюсь, этот ответ поможет любому, кто хочет решить эту проблему.
Чтобы использовать препроцессор bits/stdc++.h в Visual Studio, вам необходимо загрузить файл stdc++.h по указанной ниже ссылке.
Это нестандартный файл заголовка, который, как известно, является частью libstdc ++, который обычно поставляется с GCC. Однако VS поставляется с собственной реализацией STL от Microsoft, которая не содержит такого файла. Я бы рекомендовал прекратить его использовать и вместо этого включить необходимые стандартные заголовки, такие как , , , и т. Д.
Возьмем для примера CodeBlocks, давайте узнаем, где его конкретный путь.
Демонстрация анимации
тег ключевого кадра
Его нет в наборе инструментов VS. Он прост в использовании. Просто создайте папку и файл самостоятельно.
Сначала импортируйте stdio.h, чтобы увидеть, где находится этот файл, а затем мы создаем папку в этом месте.
Демонстрация анимации
тег ключевого кадра
bits / stdc ++. h означает файл stdc ++. h в папке bits.
Я не буду говорить о создании папок и файлов. Просто скопируйте установленный MinGW сюда. Я не буду создавать его здесь вручную, просто скопируйте.
Демонстрация анимации:
Интеллектуальная рекомендация
Java.nio.Buffer flip () метод jdk Ошибка перевода на китайский язык
Когда я сегодня читал «Идеи программирования на Java», я столкнулся с методом java.nio.Buffer flip (). Дело в том, что «[color = red] переворачивает этот буфер. Сначала установите ог.
Предварительное понимание регулярных выражений Python (4)
Сегодня я продолжу делиться базовыми знаниями о регулярных выражениях Python. В основном я представляю использование специального символа "<>". Ниже приведено конкретное руководство. .
Все белое Введение Сверток Neural Network (CNN)
Использование внутреннего соединения, левого соединения, правого соединения в оракуле
Левое-правое соединение фактически говорит, какая таблица является результатом нашего совместного запроса ~ 1. Взаимосвязь проста select A.*, B.* from A,B where A.id = B.id select A.*, B.* from.
[Код очень подробный] POJ 2492 A Bug's Life (и проверьте коллекцию)
1. Описание заголовка 2. Инструкции по анализу алгоритмов и руководство по написанию кода. Похожие темы:POJ 1182 Решение проблемы пищевой цепи Наблюдается m насекомых и n вязок. Насекомые u и v могут .
PS:
to find the correct version of g++, you can search it :
and find g++:
Интеллектуальная рекомендация
Java.nio.Buffer flip () метод jdk Ошибка перевода на китайский язык
Когда я сегодня читал «Идеи программирования на Java», я столкнулся с методом java.nio.Buffer flip (). Дело в том, что «[color = red] переворачивает этот буфер. Сначала установите ог.
Предварительное понимание регулярных выражений Python (4)
Сегодня я продолжу делиться базовыми знаниями о регулярных выражениях Python. В основном я представляю использование специального символа "<>". Ниже приведено конкретное руководство. .
Все белое Введение Сверток Neural Network (CNN)
Использование внутреннего соединения, левого соединения, правого соединения в оракуле
Левое-правое соединение фактически говорит, какая таблица является результатом нашего совместного запроса ~ 1. Взаимосвязь проста select A.*, B.* from A,B where A.id = B.id select A.*, B.* from.
[Код очень подробный] POJ 2492 A Bug's Life (и проверьте коллекцию)
1. Описание заголовка 2. Инструкции по анализу алгоритмов и руководство по написанию кода. Похожие темы:POJ 1182 Решение проблемы пищевой цепи Наблюдается m насекомых и n вязок. Насекомые u и v могут .
В онлайн редакторе код запускается в visual studio community выдаёт
Необработанное исключение по адресу 0x00D83299 0xC00000FD: Stack overflow.
И при запуске без отладки завершил работу с кодом -1073741571.
Причём проблема именно в коде потому,что другой код запускается.
Буду благодарен за помощь.
Может поможет
dalbio, а не "маловат" объём матрицы для объекта на стеке? 1001 * 1001 * 8 = 8,016,008 = приблизительно 7.8 мегабайт. ВЕСЕМЬ МЕГАБАЙТ НА СТЕКЕ ПО-УМОЛЧАНИЮ. Я бы на месте стека тоже переполнился :-)
long long matr[1001][1001] - это будет 8016008 байт, 7.645МБ.
Стандартный размер стека в MS Visual Studio задан в 1МБ. Естественно, при объявлении настолько большого массива ты сразу получишь Stack Overflow.
Выходов из данной ситуации несколько.
Выход первый - подойти к вопросу рассудительно. Тебе точно нужен именно статический массив в 8МБ именно на стеке? Я думаю что нет. Я думаю что тебе нужен std::vector , в котором ты сможешь легко разместить все 1002001 элементов. На самом деле и двумерность массива тебе тоже не очень нужна, т.к. на самом деле она тебя сейчас только запутывает. Через простую функцию от двух аргументов можно легко перейти от двух индексов к индексу в линейном массиве.
Выход второй - вынести свой статический массив за пределы контекста функции. Это можно сделать, объявив этот массив как static или объявив его в глобальной области видимости.
Выход третий, которым я советую не пользоваться без однозначного понимания своих действий.
Можно изменить размер стека через настройки линкера.
В свойствах проекта: Configuration Properties -> Linker -> System:
Stack Reserve Size - значение в байтах, это максимальный размер стека для потока. Его можно изменить хоть до 32МБ и больше.
Подвох с этим значением в том, что потоков у твоего приложения не один даже если само твое приложение является однопоточным. Вместе с твоим главным потоком работает еще несколько служебных. Их стек тоже будет расширен. Это все приводит к увеличению потребления памяти.
Обычно размер стека по умолчанию не трогают или сжимают до 64КБ, т.к. большинству потоков этого более чем достаточно. А вот для требовательных потоков, обычно, отдельно расширяют стек до требуемых размеров в момент создания потока.
Таким образом достигается контроль памяти. Даже сегодня бывают случаи, когда ее бывает мало.
Читайте также: