Не удается открыть файл iostream с исходным кодом

Обновлено: 30.06.2024

Когда вы пишете программу на C++, вы начинаете с исходного кода. Это удобочитаемая запись программы на языке программирования C++. Например программа, которая пишет текст «Hello world!» в окно консоли выглядит

Вы пишете этот текст с помощью любого текстового редактора, который вам нравится (например, Notepad++ или Vim, но не редактора форматированного текста, такого как Word или Open Office Writer). Цвета просто добавляются здесь и хорошими редакторами автоматически, чтобы сделать код более читабельным (эта функция называется подсветка синтаксиса); вы сами их никак не задаете и они не влияют на поведение программы. Файл обычно сохраняется с расширением имени файла .cpp, чтобы было ясно, что это файл исходного кода C++. Вы также можете встретить расширения .cc или .cxx.

Компьютеры не могут выполнять такие исходные файлы, они должны быть сначала переведены в двоичные инструкции процессора. Таким образом, следующим шагом будет передача этой программы компилятору, который сделает этот перевод за нас. Существует множество способов сделать это, в зависимости от компилятора. Затем компилятор берет исходный файл и «компилирует» его в исполняемую программу, которую вы затем можете запустить.

Более сложные программы обычно состоят из нескольких файлов C++, которые затем по отдельности компилируются в промежуточные выходные файлы (обычно с расширением .o или .obj), а затем «связываются» вместе с помощью программы под названием компоновщик в исполняемый файл. На самом деле, даже если в исполняемый файл компилируется всего один исходный файл, компилятор автоматически вызывает компоновщик за кулисами.

Таким образом, шаги

  1. Написать исходный код. Инструмент: редактор; результат: .cpp -файл
  2. Скомпилируйте исходный код в объектный файл. Инструмент: компилятор; результат: промежуточный объектный файл
  3. Связать объектный файл с исполняемым файлом. Инструмент: линкер; результат: исполняемый файл ( .exe в Windows, без расширения в Unix-подобных системах, таких как MacOS и Linux).

[ -<Latex[length=4mm]></ р>
<p>, auto, node Distance=6em, file/.style=, start/.style= ] \node (start) [start] <>; \node (cpp) [файл, справа=от начала], \texttt>; \node (obj) [файл, справа=cpp] , \texttt>; \node (exe) [файл, справа=obj], без расширения>; \путь (начало) пограничный узел (cpp) (cpp) пограничный узел (obj) (obj) пограничный узел (exe);

От исходного кода к исполняемым файлам.

Как установить компилятор¶

Обратите внимание, что в настоящее время каждый компилятор поставляется с компоновщиком, поэтому нет необходимости устанавливать дополнительный компоновщик.

Windows¶

Я буду называть этот компилятор MSVC .

Linux на базе Debian/Ubuntu¶

Как: скомпилировать исходный код¶

(Предположим, что вы сохранили файл как hello_world.cpp )

Windows¶

Откройте командную строку собственных инструментов VS2013 x86. Он находится в меню «Пуск» (или как вы его сейчас называете) в Visual Studio 2013 ‣ Visual Studio Tools. Затем измените текущий каталог на папку, в которой вы сохранили файл с помощью cd , например. cd C:\Users\ ВАШЕ ИМЯ \somefolder\somesubfolder .

Если ваш исходный код находится на диске, отличном от того, где находится исходный каталог командной строки, используйте команду cd /D YOURDIRECTORY (параметр /D означает «изменить диск, если необходимо").

Затем выполняется компиляция с помощью команды cl /EHsc /W4 hello_world.cpp . Теперь вы должны увидеть (среди прочего) новый файл hello_wold.exe. Вы можете проверить в командной строке, набрав dir . Если вы хотите выполнить свою программу сейчас, введите hello_world, и вы должны увидеть строку Hello world! появляется в окне консоли.

Команда компилятора¶

Давайте разберем команду компилятора.

cl — это название компилятора Microsoft. Вещи, которым предшествует косая черта /, являются опциями, которые сообщают компилятору, как обрабатывать ваш исходный код. /EHsc говорит ему включить так называемые исключения, которые действительно должны быть включены по умолчанию, но это не так. Вам не нужно это понимать, просто не забывайте добавлять эту опцию всякий раз, когда вы компилируете код C++. /W4 означает «уровень предупреждения 4» и сообщает компилятору о любых подозрительных вещах, которые он замечает в вашем исходном коде (это также должно быть значением по умолчанию, но, к сожалению, его нет ни в одном известном мне компиляторе). hello_world.cpp — это, очевидно, имя исходного файла для компиляции.

Линукс¶

Откройте терминал и измените текущий каталог на тот, в котором находится ваш исходный файл. Затем выполните g++ -std=c++14 -Wall -Wextra -ohello_world hello_world.cpp . Теперь должен появиться исполняемый файл hello_world. Вы можете проверить в терминале, набрав ls . Если вы хотите выполнить свою программу сейчас, введите ./hello_world , и вы должны увидеть строку Hello world! появляется в терминале.

Команда компилятора¶

Давайте разберем команду компилятора.

g++ — это имя компилятора. Вещи, которым предшествуют тире, - это опции, которые сообщают компилятору, как обрабатывать ваш исходный код. -std=c++14 говорит, что мы хотим использовать новейший стандарт C++14. -Wall и -Wextra сообщают компилятору о любых подозрительных вещах, которые он замечает в вашем исходном коде (это должно быть значение по умолчанию, но, к сожалению, его нет ни в одном известном мне компиляторе). -ohello_world означает «вывести ( -o ) как hello_world » и просто указывает имя исполняемого файла для создания. Если вы опустите эту опцию, она будет называться a.out . hello_world.cpp — это, очевидно, имя исходного файла для компиляции.

Несколько советов по работе с командной строкой¶

  • Вы можете использовать клавиши «Вверх» и «Вниз», чтобы просмотреть последние команды. Например, если вы хотите снова запустить последнюю команду, просто снова нажмите Вверх, и команда снова появится, готовая к редактированию или непосредственному запуску с помощью Return .
  • Вы можете использовать клавишу Tab для завершения имен файлов: например, если вы набрали hel, а файл hello_world.cpp находится в текущем каталоге, вы можете нажать клавишу Tab, чтобы завершить имя файла.
  • Нажатие Ctrl+C закрывает запущенную консольную программу и возвращает вас к командной строке, не закрывая окно консоли.
  • В Linux используйте команду ls или ls -l, чтобы отобразить файлы и подкаталоги в текущем каталоге. В Windows это делает dir.
  • Чтобы открыть текущий каталог в браузере файловой системы с графическим интерфейсом (например, Nautilus, Dolphin или Windows Explorer), используйте xdg-open . в линуксе и проводнике. в Windows.

Построчная разбивка¶

Пробел¶

Вторая строка пуста, особого смысла в ней нет. Я просто вставил его, чтобы исходный код выглядел лучше. Как правило, C++ игнорирует все пробелы (так программисты собирательно называют пробелы, символы табуляции и разрывы строк), за исключением того, что иногда они необходимы для разделения слов. Единственный случай, когда это необходимо в этой программе, — это пробел между int и main в строке 3. Второй случай, когда пробел имеет значение, — это директивы препроцессора: здесь разрыв строки необходим, чтобы сообщить компилятору, где он заканчивается. Это означает, что если бы я захотел, я мог бы написать всю программу как можно короче

и это будет означать то же самое, что и длинная версия. Ах да, я также оставил там пробел между Hello и world, но это станет очевидным, когда мы дойдем до строки 5. Можно также вставить столько пробелов, сколько нужно, например:

Конечно, вы также не можете вставлять пробелы в середине слов, например писать c out вместо cout , и есть несколько других исключений в виде символов, которые записываются с использованием более одного символа, а именно

Тем не менее, я думаю, вы понимаете, почему я написал программу именно так, как написал изначально: ее просто легче читать.

Определение основной программы¶

Теперь все становится интереснее!

Третья строка говорит компилятору: «А вот и главная программа!» [2], а фигурные скобки показывают компилятору, где он начинается (< в строке 4) и заканчивается (> в строке 6). Все, что находится между ними, будет выполнено при запуске программы.

Запись в консоль¶

Эта строка действительно единственная, которая действительно выполняется во время выполнения. Это так называемое оператор. На самом деле это «инструкции» или «команды», которые предписывают компьютеру что-то сделать. В этом случае он говорит компьютеру напечатать текст «Hello world!» за которым следует разрыв строки ( \n ) для стандартного вывода ( std::cout ) [3]. Пока что вы можете думать о

Утверждения всегда заканчиваются точкой с запятой ( ; ).

Последовательные операторы¶

Конечно, мы можем написать больше одного оператора в основной программе. Давайте добавим еще несколько операторов вывода:

Как вы, наверное, и ожидали, это напечатает:

Инструкции выполняются в том же порядке, в котором вы их пишете.

То, что последние два утверждения я написал в одной строке, не имеет особого значения. Как я уже сказал, компилятор не заботится о пробелах, таких как разрывы строк. Он определяет, где заканчивается одно выражение и начинается следующее, на основе точек с запятой. Однако обычно вы должны писать только один оператор в строке. Вышеупомянутое было просто для демонстрационных целей, это нехороший стиль.

Дополнительные результаты¶

Вот еще две вещи, которые вы можете сделать с помощью cout , которые пригодятся позже:

Вы можете опустить завершающий \n в выходном тексте, чтобы следующий оператор вывода продолжался в строке, начатой ​​предыдущим:

В проекте C++, когда вы включили заголовочный файл, но внутри проекта мы не можем получить доступ к этому заголовочному файлу, обычно мы получаем ошибку, связанную с невозможностью открытия исходного файла. Для исправления этой ошибки проверьте, доступен ли включаемый файл в пути включения проекта или нет.

не удается открыть файл с исходным кодом Visual Studio C++

Решение 1. Проверьте настройки проекта Visual Studio в разделе C++, установите флажок Включить каталоги и убедитесь, что Your_filename.h указывает правильный путь. После добавления правильных включаемых каталогов он устранит ошибку Visual Studio, не позволяющую открыть исходный файл.

Visual Studio дополнительный каталог включения

включить каталоги в файл заголовка

Вы можете щелкнуть правой кнопкой мыши файл заголовка и открыть его в Visual Studio. Если файл указывает правильно, он откроется.

открыть заголовочный файл c++

Щелкните правой кнопкой мыши и попробуйте открыть заголовочный файл

Если ваш включаемый файл не указывает правильно или вы не добавили в свой включаемый каталог, вы не сможете открыть его из Visual Studio.

ошибка при открытии файла заголовка

если файл не включен в проект, выдайте эту ошибку

Решение 2. Еще одно решение. Если ваш заголовочный файл находится в другой папке/местоположении, вы можете включить путь к файлу непосредственно в заголовочный файл. Здесь вы можете использовать относительный путь или указать полный путь к заголовочному файлу.

Включить в зависимости от структуры папок вашего проекта и требований.

c++ не может открыть исходный файл iostream

Решение-1: ошибка открытия файла iostream обычно возникает, когда отсутствует $(IncludePath) внутри Свойства->Каталоги VC++->Включить каталоги. И вы по ошибке удалили Включить путь.

Решение 2. Другая возможная причина заключается в том, что при установке Visual Studio вы не выбрали пакеты C++.

Решение 3. Вы можете проверить это, включив stdafx.h при запуске (только для проектов Visual Studio)

Решение 4. Иногда такие ошибки возникают, когда на одном компьютере установлено несколько версий Visual Studio. Вы можете проверить Проекты и решения -> Каталоги VC++, правильно ли они добавлены для вашего проекта и указывают на правильное местоположение версии.

Для кода Visual Studio:

С++ не может открыть исходный файл iostream в коде Visual Studio. Это также может произойти, если в файл c_cpp_properties.json кода Visual Studio не добавлены правильные пути.

не удается открыть исходный файл «string»

Попробуйте выполнить следующие действия, чтобы устранить ошибку.

1) Параметр «Открыть каталоги VC++» в свойствах конфигурации Visual Studio
2) Будут доступны все ее значения каталогов (например, исполняемые каталоги), просто вам нужно выбрать раскрывающийся список и нажать «Изменить»
3 ) Удалите выбор «Наследовать от родителя»
4) Теперь просто нажмите «ОК», и вы не увидите никаких изменений в поле «Редактировать».
5) Вам нужно повторить это для всех каталогов. В конце исполняемые каталоги будут установите значение $(ExecutablePath), а для каталогов Include будет установлено значение $(IncludePath), аналогично всем каталогам
6) Теперь нажмите «Применить», а затем «ОК».

Вывод: невозможно открыть исходный файл c++

Мы предоставили решения для нескольких ошибок, связанных с невозможностью открытия исходного файла c++. Если вы попробуете данное решение, надеюсь, вы сможете устранить ошибку. Но если вы все еще получаете сообщение об ошибке, вы можете добавить свой комментарий и код. Мы постараемся решить и найти решение для вас. Удачного кодирования 🙂

Я новичок в С++. Я только начал! Я попробовал код в версии Visual C++ 2010 Express, но получил следующее сообщение об ошибке кода.

Это код

К вашему сведению, вам следует избегать использования табуляции в коде. С ними очень сложно иметь дело при форматировании на таких сайтах вопросов и ответов, как этот. Вместо этого используйте пробелы.

Я предполагаю, что ваш путь включения включает в себя каталог включения VC (в файлах программы). Однако при установке ВК вы выбрали нативные файлы?

Привет, Дэвид, это то, что у меня есть в моем пути включения: Program files (x86) > Microsoft Visual Studio 10.0 > VC > include > srv.h

14 ответов 14

@sparkyShorts, поэтому, когда мы обычно кодируем на C/C++, следует соблюдать обычный стандарт: не писать «используя пространство имен XXX», чтобы избежать путаницы, когда кто-то отлаживает код. Вместо этого мы напрямую используем имя пространства имен и вызываем его библиотечную функцию. например std::cout, std::cin, std::vector и т. д.

Использование *.h для любого заголовочного файла рекомендуется только для внешних библиотек, отличных от библиотеки стандартного C++, поэтому, если вы включаете стандартную библиотеку C/C++, избегайте использования суффикса ".h".

Открытие всего пространства имен и, кроме того, включение стандартного заголовка звучит как неразбериха. Я бы проверил другие ответы.

Некоторые вещи, которые вы должны проверить:

Проверьте включаемую папку в вашей версии VS (в " C:\Program Files\Microsoft Visual Studio xx.x\VC\include " проверьте файл, который вы включаете, iostream , убедитесь, что он есть).

Проверьте свои проекты Включить каталоги в > Свойства > Свойства конфигурации > Каталоги VC++ > Включить каталоги - (это должно выглядеть так: $(VCInstallDir)include;$( VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include; )

Убедитесь, что вы выбрали правильный проект для этого кода (Файл > Создать > Проект > Visual C++ > Консольное приложение Win32)

Убедитесь, что в ваших файлах кода ничего нет, VS этого не поддерживает (в том же проекте проверьте другие файлы кода, файлы .cpp и .h < em>и удалите его).

Убедитесь, что в файлах кода вашего проекта нет более одной функции main() (в том же проекте проверьте другие файлы кода, файлы .cpp и .h на наличие функция main() и удалите ее или замените другим именем).

Что можно попробовать сделать:

  • Исключить, используя пространство имен std; из вашей функции main() и поместите ее после директивы include.
  • Используйте std::cout без использования пространства имен std; .

@ Secko: что мне проверить в этих строках: проверьте папку include в вашей версии VS. Проверьте свои проекты. Включите каталоги в <Имя проекта>> Свойства > Свойства конфигурации > Каталоги VC++ > Включить каталоги. Убедитесь, что вы выбрали правильный проект для этого кода (консольное приложение). Убедитесь, что у вас нет нигде в ваших файлах кода ( VS не поддерживает это). Убедитесь, что в ваших файлах кода проекта нет более одной функции main(). Я действительно новичок

Вышеизложенное сработало для меня. Ниже не было:

Это также не удалось:

Скорее всего, вам не хватает $(IncludePath) в свойствах->Каталоги VC++->Включить каталоги. Добавление этого должно сделать iostream и другие снова видимыми. Вероятно, вы удалили его по ошибке при настройке программы.

Возможно, ваш компилятор и ресурсы, установленные вокруг него, были неполными. Я рекомендую переустановить ваш компилятор: после этого он должен работать.

Я пытался несколько раз. Тот же результат. Я рассматриваю возможность использования другого компилятора. Пожалуйста, не могли бы вы предложить кого-нибудь?

Я получил эту ошибку, когда создал "Пустое" консольное приложение в Visual Studio 2015. Я заново создал приложение, оставив флажок "Пустой" не отмеченным, он добавил все необходимые библиотеки.

Если ваши включаемые каталоги правильно указаны в листе свойств проекта VC++ -> Свойства конфигурации -> Каталоги VC++-> Включаемые каталоги. Путь указан в макросе $(VC_IncludePath). В моем VS 2015 это оценивается как: "C :\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include"

Это помогло мне.

с использованием пространства имен std;

int main()
string firstName, lastName;
double hourRate, numHours;

Мой файл c_cpp_properties.json

Дайте мне знать, если вам понадобится дополнительная информация

Текст был успешно обновлен, но возникли следующие ошибки:

GiBg1aN прокомментировал 19 сентября 2017 г.

Если вы используете Linux, вам нужно добавить путь /usr/include/linux

Прокомментировал ZoeVonFeng 20 сентября 2017 г. •

У меня была такая же проблема в Windows, после того как я добавил "C:\\cygwin64\\lib\\gcc\\x86_64-pc-cygwin\\6.4.0\\include\\c++" в includePath, я получил эта ошибка: невозможно открыть исходный файл "bits/c++config.h" (зависимость от "iostream")

прокомментировал bobbrow 20 сентября 2017 г. •

Что gcc говорит вам о том, что путь включения должен быть? Запустите эту команду и убедитесь, что все распечатанные пути указаны в вашем c_cpp_properties.json: gcc -v -E -x c++ -

Комментарий NikoGP от 20 сентября 2017 г.

прокомментировал sean-mcmanus 20 сентября 2017 г.

@NikoGP Перейдите в меню «Файл» -> «Настройки» -> «Настройки» и выполните поиск «intelliSenseEngine», чтобы найти настройку. Однако у вас уже установлено значение «По умолчанию». Вы запускали команду gcc, упомянутую @bobbrow? Можете ли вы предоставить обновленный файл c_cpp_properties.json? В основном вам нужно найти, откуда ваш компилятор извлекает заголовок iostream, и добавить путь к настройке includePath (и убедиться, что определения верны). Работает ли Go to Definition с заголовочным файлом? Если это так, это означает, что файл iostream был найден в результате рекурсивного поиска по вашему параметруbrowse.path.

Комментарий NikoGP 20 сентября 2017 г. •

Вот мой текущий файл c_cpp_properties.json, когда я наводил курсор на " Кроме того, я установил cygwin перед установкой MingW, я не уверен, что это что-то испортило или нет

прокомментировал bobbrow 20 сентября 2017 г.

Я переформатировал ваш комментарий. Внутри ваших «конфигураций» есть элемент «configurations», который является недопустимым синтаксисом для файла c_cpp_properties.json. Исправьте это, как показано ниже:

Комментарий NikoGP от 20 сентября 2017 г.

Скриншот вывода

прокомментировал bobbrow 20 сентября 2017 г. •

Какую версию MinGW вы используете? В вашем первом посте казалось, что у вас есть 6.3.0 в пути включения. В вашем последнем сообщении было похоже, что вы вставили пути включения для 5.3.0 с нашей страницы MinGW.

Комментарий NikoGP от 20 сентября 2017 г.

Хорошо, я думаю, что моя проблема заключается в том, что я установил cygwin до MingW, а затем неправильно установил необходимые пакеты для правильной работы MingW.
Есть ли где-нибудь, где я могу найти, какие пакеты мне нужно установить, чтобы VS Code правильно работал с MingW?

smithalexk прокомментировал 27 сентября 2017 г.

У меня также возникла проблема, замеченная @NikoGP с моим Intellisense после обновления до версии 0.13.0. Когда я включил параметр «По умолчанию» в движке Intellisense, я продолжаю получать сообщение об ошибке iostream include path (см. прикрепленные файлы). Я использую MacOS 10.12.6, а также обновил механизм LLVM.

helloworld_example

Простой пример "Hello World", показывающий ошибку:

c_pp_properties

Мой файл c_pp_properties.json:

прокомментировал bobbrow 27 сентября 2017 г.

@smithalexk, для меня этот файл находится в /usr/include . Что показывает clang -Wp, -v -E -xc -x c++ /dev/null в качестве пути включения? «includePath» в вашем файле c_cpp_properties.json должен соответствовать этому.

smithalexk прокомментировал 27 сентября 2017 г.

Да, похоже, это исправлено. Спасибо за помощь!

Для справки, я пропустил:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include
/Applications /Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDK/MacOSX10.13.sdk/System/Library/Frameworks

dorsa1986 прокомментировал 29 сентября 2017 г.

снимок экрана 2017- 09-29 в 3 58 45 pm

мой файл c_cpp_properties.json:

Мой файл tasks.json:

Мой файл launch.json:

снимок экрана 2017- 09-29 в 4 22 52 pm

Мои настройки пользователя:

Путь к папке FirstProg:

снимок экрана 2017- 09-29 в 16:17:15

прокомментировал bobbrow 2 октября 2017 г.

@dorsa1986, что показывает g++ -Wp,-v -E -xc -x c++ /dev/null в качестве пути включения? «includePath» в вашем файле c_cpp_properties.json должен соответствовать этому.

smithalexk прокомментировал 2 октября 2017 г.

Привет @dorsa1986, я также заметил, что вы неправильно написали "iostream". В настоящее время вы включаете заголовок «ioastream». Похоже, это может быть причиной вашей ошибки.

dorsa1986 прокомментировал 2 октября 2017 г.

@smithalexk Спасибо, я исправил, но все равно получил ошибку

снимок экрана 2017- 10-02 в 9 25 07

dorsa1986 прокомментировал 2 октября 2017 г.

прокомментировал bobbrow 2 октября 2017 г.

Согласно этой ошибке, либо ваш tasks.json неправильно собирает вашу программу, либо ваш launch.json имеет неверный путь к собранной программе. Но это не проблема с IntelliSense. Я не вижу красных волнистых линий в вашем редакторе.

dorsa1986 прокомментировал 2 октября 2017 г.

как я могу их решить?

прокомментировал bobbrow 2 октября 2017 г.

Откройте tasks.json или launch.json (в папке .vscode) и убедитесь, что они правильные

dorsa1986 прокомментировал 2 октября 2017 г.

это мой файл launch.jason:

dorsa1986 прокомментировал 2 октября 2017 г.

Это мои задачи.json:

снимок экрана 2017- 10-02 в 9 40 40 утра

Я работал над этим около 4 дней. Я не могу найти свою ошибку.

прокомментировал bobbrow 2 октября 2017 г.

Основываясь на том, что я вижу в ваших предыдущих сообщениях, я предполагаю, что путь должен быть /Users/dorsat/Desktop/FirstProg/a.out

dorsa1986 прокомментировал 2 октября 2017 г.

У меня такая же ошибка.

прокомментировал bobbrow 2 октября 2017 г.

Вы уже построили его? Откройте свой терминал или окно Finder и скажите мне, где находится ваша скомпилированная программа.

прокомментировал sean-mcmanus 2 октября 2017 г. •

@dorsa1986 Является ли a.out именем исполняемого файла? Есть ли у него права на выполнение? Можно ли запустить его без VS Code из командной строки?

прокомментировал bobbrow 2 октября 2017 г.

Должно существовать множество веб-сайтов, на которых можно пройти этапы сборки кода. Этот форум предназначен для устранения ошибок в расширении кода VS, и ваша проблема не является ошибкой, поскольку она также не работает для вас в терминале.

У меня заканчиваются идеи для вас, но вот что пришло на ум:

  • Проверьте свою файловую систему, чтобы убедиться в наличии заголовков (посмотрите на пути включения, которые ваш компилятор сообщает вам, что он использует)
  • Вы установили XCode или запустили xcode-select --install?
  • Установили ли вы другой компилятор, который можно попробовать? (Ваш файл tasks.json ссылается на g++, но скриншоты вашего терминала показывают cpp)
  • Похоже, что в вашей папке уже есть файл a.out. Как вы его получили?

комментарий perryizgr8 прокомментирован 10 октября 2017 г.

Я выполнил все предложения в этой теме, и теперь мойBrowse.path и includePath такие же, как записи, найденные с помощью "g++ -Wp,-v -E -xc -x c++ /dev/null".

Однако я по-прежнему не могу включить iostream, atomic или stdio, практически любой стандартный заголовок. Мои собственные заголовки из подкаталога в порядке.

Чтобы было ясно, моя проблема связана не со сборкой (я использую свою собственную систему сборки), а с проблемой intellisense. Особенность в том, что мой код находится на удаленном сервере Ubuntu, и я запускаю код VS на своем ноутбуке с Windows с диском Z:, подключенным к / на сервере. Буду признателен, если у кого-нибудь есть идеи.

прокомментировал bobbrow 10 октября 2017 г.

Можете ли вы поделиться путем включения, заданным g++? Это путь на сервере Ubuntu или сопоставленное местоположение в Windows? includePath должен соответствовать файловой системе операционной системы, с которой вы работаете (в данном случае Windows с путем Z:).

комментарий perryizgr8 прокомментирован 10 октября 2017 г.

Это вывод команды g++ на компьютере с Ubuntu:

Я подключил / к диску с буквой Z, поэтому мой includePath выглядит так:

Как видите, я преобразовал каждый путь в эквивалентный путь в моей системе Windows. Я могу получить доступ к заголовкам, используя эти пути в проводнике Windows, поэтому путь правильный. Таким образом, хотя я могу открыть заголовок iostream, перейдя к «z:\usr\include\x86_64-linux-gnu\c++\5» и открыв файл в любом редакторе, код VS по-прежнему показывает зеленую волнистую линию под включением.< /p>

Я подключаюсь к серверу через Интернет, поэтому я беспокоюсь, что это может быть связано с тем, что код VS не может анализировать файлы, которые медленно читаются. Это может вызвать эту проблему? Значок огня в правом нижнем углу исчезает через некоторое время (1–2 минуты).

Я пытаюсь скомпилировать очень простую программу на C++. Во всех смыслах это может быть:

Я ввожу
g++ -c -Wall "HelloWorld.cpp" и получаю сообщение об ошибке
iostrem.h: Нет такого файла или каталога

Пожалуйста, помогите, я довольно много программировал на C++ в Windows, но я только изучаю Linux, и у меня проблемы с компиляцией кода.

Спасибо, чувак, я чувствую себя глупо. Ненавижу это признавать, но, несмотря на то, что я изрядно поработал на C++, это было давно.

ошибка: ожидается конструктор, деструктор или преобразование типа перед «пространством имен»

Как вы установили компилятор g++?? Я полагаю, что если вы не выполнили
sudo apt-get install build-essential
, вы обнаружите, что не хватает многих вещей — я знаю, что это верно для базового компилятора gcc.

sudo apt-get install g++

это то, что я использовал. Я попробую использовать то, что вы сказали, и посмотрю, что получится.

Ну, кроме ваших проблем (я не понимаю, как у вас может быть такая же ошибка, поскольку вы больше не используете *.h), main должен возвращать и int, а это не так.

Если установлен build-essential, попробуйте следующее:


Скопируйте и вставьте любые ошибки.

HelloWorld.cpp:1: ошибка: ожидаемое имя класса перед токеном �/�
HelloWorld.cpp:9: ошибка: ожидаемое имя класса перед токеном �/�

HelloWorld.cpp:1: ошибка: ожидаемое имя класса перед токеном ‘/’
HelloWorld.cpp:9: ошибка: ожидаемое имя класса перед токеном ‘/’

Полностью опубликуйте код и шаги. Как и я.

Позвольте мне оживить эту старую тему. У меня общий вопрос: как заставить компилировать старомодную (т.е. использующую iostream.h) программу С++? Мой конкретный пример.

Я запускаю Karmic на 64-битной машине, g++ и build-essentials установлены.

DM > найдите iostream.h
/usr/include/glib-2.0/gio/gfileiostream.h
/usr/include/glib-2.0/gio/giostream.h

Я экспериментировал с небольшими изменениями в исходном коде, т. е. удалял .h, добавлял "using namespace std;" но я начал получать предупреждения о старомодном разыменовании, используемом в программе. Я не хочу переписывать все это (я не программист на С++), так как я могу заставить этот старомодный код установить Кармическую установку g++?

Читайте также: