Я начал изучать 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 ++, так называемый до ANSI C ++, это полностью вышло из употребления к началу этого тысячелетия. Первый стандарт ANSI для C ++ был опубликован в 1998 году, затем была версия 2003 года, версия 2011 года, версия 2014 года, и теперь мы ожидаем, что версия 2017 года будет официально опубликована. Каждая из этих стандартных версий внесла более или менее значительные изменения в язык.
Для Turbo C ++ вы должны изменить программу следующим образом:
#include <iostream.h> // note the .h suffix
// using namespace std; // Turbo C++ doesn't implement namespaces
int main()
{
cout << "Hello, World!";
return 0;
}
Если вы посмотрите на эту программу, разница между современным диалектом C ++ и тем, который принят в Turbo C ++, может показаться небольшой. Однако он станет намного больше, поскольку ваши программы будут становиться все более сложными.
Хотя вы можете изучать программирование с использованием Turbo C ++, я настоятельно рекомендую избегать этого, если это возможно, из-за следующих проблем:
Есть много современных бесплатных (как в пиво, а также в речь) компиляторы и IDE, которые вы можете использовать вместо Turbo C ++. Некоторые из них включают в себя:
К сожалению, некоторые школы / учителя вынуждают учащихся использовать Turbo 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 или старше, то ваша школа плохая, а ваши учителя крайне некомпетентны. Пожалуйста, свяжите этот пост с ними и их директором.
Turbo C ++ — очень старый компилятор, и он немного отличается от компилятора GNU C ++. Код, которым вы поделились, будет отлично работать с компилятором GNU, но чтобы запустить его с Turbo C ++, вам нужно внести несколько изменений:
1. Измените имя файла заголовка с iostream
в iostream.h
2. И убрать строку «используя пространство имен std». Это не требуется в Turbo C ++.
Вот модифицированный код:
#include <iostream.h>
int main()
{
cout << "Hello, World!";
return 0;
}