Почему простая программа в стиле "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 93

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

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

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

  1. Visual C++ Community Edition - это IDE и компилятор с Microsoft
  2. Code:: Blocks - это легковесная среда разработки. На Windows он поставляется с несколько устаревшим компилятором, но вы можете установить более современный компилятор сам
  3. Eclipse CDT - это мощная кросс-платформенная интегрированная среда разработки. Он не поставляется с собственным компилятором, поэтому вам нужно установить отдельный компилятор. В 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 были довольно близки к нему.

  • около 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 или старше, то ваша школа плоха, а ваши учителя сильно некомпетентны. Пожалуйста, свяжите этот пост с ними и их руководителем.