Почему простая программа в стиле "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++, я бы настоятельно рекомендуем избегать этого, если это возможно по-человечески из-за следующих проблем:

  1. вы будете изучать язык, который несколько похож на популярный язык, используемый в промышленности, но очень отличается, тем не менее, без веской причины. Если вы планируете C++ для реальной разработки программного обеспечения,вам придется многому научиться. Гораздо проще сразу изучить современный C++.
  2. нет существующей литературы о Turbo c++. Почти 100% материала C++ вы найдете в интернете или в книгах не применимы непосредственно к Turbo C++ из коробки. Некоторым потребуется лишь незначительная адаптация, в то время как другие материалы совершенно непригодны для использования. Практически единственным источником помощи, доступным вам сразу, является встроенная справка Turbo C++.
  3. мало кто помнит Turbo c++. Задавая вопросы на форумах, всегда указывайте, что вы используете диалект pre-ANSI, чтобы отфильтровать ответы, ориентированные на современную версию язык. Вероятно, вы получите кучу комментариев, предлагающих вам немедленно остановиться и переключиться на современный компилятор с каждым вопросом.

есть много современных бесплатных (как в пиво, а также слова) компиляторы и IDEs вы можете использовать вместо Turbo c++. Некоторые из них включают:

  1. Visual C++ Community Edition является IDE и компилятором из Корпорация Microsoft
  2. Код::Блоки является облегченной IDE. На Windows он поставляется с несколько устаревшим компилятором, но вы можете установить более современный компилятор сам
  3. затмение CDT - мощная кроссплатформенная IDE. Он не поставляется с собственным компилятором, поэтому вам нужно установить отдельный компилятор. В Windows, используйте, например,MinGW.
  4. много
  5. кроме того, есть много онлайн компиляторы, такие какhttp://ideone.com, https://www.onlinegdb.com/ и http://coliru.stacked-crooked.com/, плюс много (они в основном хороши для опробования идей и написания очень маленьких программ).
  6. и 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 или старше, то ваша школа плоха, и ваши учителя сильно некомпетентны. Пожалуйста, свяжите это сообщение с ними и их директором.