Почему простая программа в стиле "Hello World" не компилируется с Turbo C++?
Я начал изучать 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'
что не так с этой очень простой программой? Как исправить эти ошибки?
3 ответов
С этой программой нет проблем. (За исключением, вероятно, некоторых стилистических проблем -
using namespace std
Не рекомендуется). Проблема в Turbo c++. Это очень старая часть программного обеспечения. Он реализует диалект C++, так называемый pre-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++, я бы настоятельно рекомендуем избегать этого, если это возможно по-человечески из-за следующих проблем:
- вы будете изучать язык, который несколько похож на популярный язык, используемый в промышленности, но очень отличается, тем не менее, без веской причины. Если вы планируете C++ для реальной разработки программного обеспечения,вам придется многому научиться. Гораздо проще сразу изучить современный C++.
- нет существующей литературы о Turbo c++. Почти 100% материала C++ вы найдете в интернете или в книгах не применимы непосредственно к Turbo C++ из коробки. Некоторым потребуется лишь незначительная адаптация, в то время как другие материалы совершенно непригодны для использования. Практически единственным источником помощи, доступным вам сразу, является встроенная справка Turbo C++.
- мало кто помнит Turbo c++. Задавая вопросы на форумах, всегда указывайте, что вы используете диалект pre-ANSI, чтобы отфильтровать ответы, ориентированные на современную версию язык. Вероятно, вы получите кучу комментариев, предлагающих вам немедленно остановиться и переключиться на современный компилятор с каждым вопросом.
есть много современных бесплатных (как в пиво, а также слова) компиляторы и IDEs вы можете использовать вместо Turbo c++. Некоторые из них включают:
- Visual C++ Community Edition является IDE и компилятором из Корпорация Microsoft
- Код::Блоки является облегченной IDE. На Windows он поставляется с несколько устаревшим компилятором, но вы можете установить более современный компилятор сам
- затмение CDT - мощная кроссплатформенная IDE. Он не поставляется с собственным компилятором, поэтому вам нужно установить отдельный компилятор. В Windows, используйте, например,MinGW.
- много
- кроме того, есть много онлайн компиляторы, такие какhttp://ideone.com, https://www.onlinegdb.com/ и http://coliru.stacked-crooked.com/, плюс много (они в основном хороши для опробования идей и написания очень маленьких программ).
- и Clang / LLVM и GCC are бесплатные программы компиляторы, поддерживающие последние версии C++.
к сожалению, некоторые школы/учителя чтобы заставить студентов использовать Turbo c++ даже в наши дни. К сожалению, это не то, что это сообщество может исправить. Если вы окажетесь в такой ситуации, приготовьтесь к тому, что не сможете получить большую помощь извне.
Turbo C++ - очень старый компилятор, и он немного отличается от компилятора GNU C++. Код, которым вы поделились, будет отлично работать с компилятором GNU, но для его запуска с Turbo C++ вам нужно внести несколько изменений:
1. Измените имя файла заголовка с iostream
to iostream.h
2. И удалить строку "using namespace std" не требуется в Turbo C++.
Вот измененный код:
#include <iostream.h>
int main()
{
cout << "Hello, World!";
return 0;
}
"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 или старше, то ваша школа плоха, и ваши учителя сильно некомпетентны. Пожалуйста, свяжите это сообщение с ними и их директором.