Я начал изучать C ++ для своего класса программирования. Я скачал эту программу "Hello World":
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!";
return 0;
}
но Turbo C ++ жалуется:
Error D:\HELLO.CPP 1: Unable to open include file 'IOSTREAM'
Error D:\HELLO.CPP 2: Declaration syntax error
Error D:\HELLO.CPP 6: Undefined symbol 'cout'
Что не так с этой очень простой программой? Как я могу исправить эти ошибки?
Ответы:
С этой программой проблем нет. (За исключением, вероятно, некоторых стилистических проблем -
using namespace std
не рекомендуется). Проблема в Turbo C ++. Это очень старая программа. Он реализует диалект C ++, так называемый pre-ANSI C ++ , который полностью вышел из употребления к началу этого тысячелетия. Первый стандарт ANSI для C ++ был опубликован в 1998 году, затем были версия 2003 года, версия 2011 года, версия 2014 года, версия 2017 года, и теперь мы ожидаем, что версия 2020 года будет официально опубликована. Каждая из этих редакций стандарта вносила более или менее значительные изменения в язык.Для Turbo C ++ вам необходимо изменить программу следующим образом:
Если вы посмотрите на эту программу, то разница между современным диалектом C ++ и диалектом Turbo C ++ может показаться небольшой. Однако он станет намного больше по мере усложнения ваших программ.
Хотя вы можете изучать программирование с использованием Turbo C ++, я настоятельно рекомендую избегать этого, если это возможно, из-за следующих проблем:
Существует множество современных бесплатных (как в пиве , так и в речи ) компиляторов и IDE, которые вы можете использовать вместо Turbo C ++. Некоторые из них включают:
К сожалению, некоторые школы / учителя, кажется, заставляют учеников использовать Turbo C ++ даже в наши дни. К сожалению, это не то, что сообщество может исправить. Если вы окажетесь в такой ситуации, приготовьтесь к тому, что не сможете получить большую помощь извне.
источник
using namespace std
. Это может быть, а может и не быть хорошим педагогическим решением - обучать этому новых программистов, но само по себе это не является морально неправильным.using namespace std
это плохая практика, но я думаю, что она относится к этому вопросу, потому что программы C ++ hello world, которые вы найдете в Интернете, почти всегда делают это. Поэтому важно понимать, что Turbo C ++ не в этом виноват. Возможно, вместо «С этой программой проблем нет» скажите: «Эта программа действительна в соответствии с текущим стандартом C ++; она должна компилироваться».«Turbo C ++» может означать множество компиляторов. Задавая этот вопрос, важно указать номер версии.
Borland Turbo C ++ до версии 3.1 представлял собой чистые компиляторы MS DOS в классической среде IDE с синим фоном. Они были выпущены примерно где-то между 1989 и 1992 годами, задолго до того, как C ++ стал стандартизированным, что произошло в 1998 году. И поэтому они использовали предстандартный диалект C ++.
В частности, они использовали
#include <iostream.h>
синтаксис, а не стандарт#include <iostream>
, но также не охватывали целый ряд функций C ++, таких как пространства имен, шаблоны и т. Д. Библиотека шаблонов STL еще не была частью стандарта, поэтому все, что связано с этой библиотекой, было довольно отличается от того, что позже стало стандартом.Позже, в 90-х, Borland выпустила несколько компиляторов DOS / Windows с лучшей совместимостью. Где-то до версии 5 они все еще боролись с полным соответствием C ++ 98, хотя эти версии Windows были довольно близки к нему.
В конце 90-х они отказались от названия «Turbo C ++» в пользу Borland C ++ Builder, который был не просто IDE, а полноценным инструментом RAD на основе Delphi. Эти компиляторы полностью совместимы с C ++ 98 и более поздними версиями C ++ 03.
Примерно в 2005 году Borland отказалась от компиляторов как части своей линейки продуктов. Компиляторами стала компания «Codegear», которая позже стала Embarcadero. Примерно в то время они выпустили бесплатную версию Borland Builder, которую назвали «Turbo C ++». Эта версия полностью соответствовала C ++ 03.
В настоящее время эти компиляторы называются Embarcadero C ++ Builder. Я считаю, что в настоящее время они поддерживают C ++ 11 с некоторым C ++ 14. Больше информации здесь.
Излишне говорить, что в студенческие годы вы не должны использовать ничего, кроме современных компиляторов. Использование компиляторов MS DOS 1991 года при изучении C ++ в 2018 году - просто безумие. Это не только контрпродуктивно, но и напрямую вредно и сделает вас плохим программистом на C ++. Если ваша школа вынуждает вас использовать Turbo C ++ 3.1 или более раннюю версию, то ваша школа плохая, а ваши учителя крайне некомпетентны. Пожалуйста, свяжите этот пост с ними и их руководителем.
источник
std::string
вместоchar *
экзаменов, потому что они не знают, что C ++ стандартизирован иchar *
устарела." .Turbo C ++ - очень старый компилятор, который немного отличается от компилятора GNU C ++. Код, которым вы поделились, будет отлично работать с компилятором GNU, но для его запуска с Turbo C ++ вам нужно внести несколько изменений:
1. Измените имя файла заголовка с
iostream
наiostream.h
2. И удалите строку «using namespace std». Это не так. требуется в Turbo C ++. Вот модифицированный код:
источник