Почему простая программа в стиле "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; }
в то время как вы можете научиться программировать с помощью Turbo C++ я бы настоятельно рекомендуем избегать этого, если это возможно по-человечески из-за следующих проблем:
- вы будете изучать язык, который несколько похож на популярный язык, используемый в промышленности, но очень отличается, тем не менее, без уважительной причины. Если вы планируете C++ для реальной разработки программного обеспечения, вам придется многое переучивать. Гораздо проще сразу выучить современный C++.
- нет никакой существующей литературы о Turbo C++. Почти 100% материала C++ вы найдете в интернете или в книгах напрямую не применимо к Turbo C++ из коробки. Некоторым потребуется лишь незначительная адаптация, в то время как другие материалы совершенно непригодны. В значительной степени единственным источником помощи, сразу доступным для вас, является встроенная справка Turbo C++.
- мало кто помнит Turbo C++. Задавая вопросы на форумах, всегда указывайте, что вы используете диалект pre-ANSI, чтобы отфильтровать ответы, ориентированные на современную версию язык. Вы, вероятно, получите кучу комментариев, предлагающих вам немедленно остановиться и переключиться на современный компилятор с каждым вопросом, который вы задаете.
есть много современных свободных (как в пиво, а также слова) компиляторы и IDE можно использовать вместо Turbo C++. Некоторые из них включают в себя:
- Visual C++ Community Edition - это IDE и компилятор с Microsoft
- Code:: Blocks - это легковесная среда разработки. На Windows он поставляется с несколько устаревшим компилятором, но вы можете установить более современный компилятор сам
- Eclipse CDT - это мощная кросс-платформенная интегрированная среда разработки. Он не поставляется с собственным компилятором, поэтому вам нужно установить отдельный компилятор. В 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
toiostream.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 были довольно близки к нему.
около 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 или старше, то ваша школа плоха, а ваши учителя сильно некомпетентны. Пожалуйста, свяжите этот пост с ними и их руководителем.