web-dev-qa-db-ja.com

単純な「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'

この非常に単純なプログラムの何が問題になっていますか?これらのエラーを修正するにはどうすればよいですか?

97
n.m.

このプログラムに問題はありません。 (おそらくいくつかのスタイル上の問題を除いて、using namespace stdは推奨されません)。問題はTurbo C++にあります。これは非常に古いソフトウェアです。それは、C++の方言、いわゆるpre-ANSI C++を実装します。 C++の最初のANSI標準は1998年に公開され、その後2003年版、2011年版、2014年版、2017年版があり、2020年版が正式に公開される予定です。これらの標準改訂のそれぞれは、言語に多かれ少なかれ重要な変更をもたらしました。

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++に関する既存の文献はありません。インターネットまたは書籍で見つかるC++素材のほぼ100%は、そのままTurbo C++に直接適用することはできません。若干の変更のみが必要なものもあれば、まったく使用できないものもあります。すぐに利用できるヘルプのほとんど唯一のソースは、組み込みのTurbo C++ヘルプです。
  3. Turbo C++を覚えている人はほとんどいません。フォーラムで質問をするときは、最新バージョンの言語を対象とした応答を除外するために、ANSI以前の方言を使用していることを常に指定してください。すぐに停止し、質問するたびに最新のコンパイラーに切り替えることを提案するコメントがおそらく表示されます。

Turbo C++の代わりに使用できる最新のコンパイラ( ビール 、および 音声 など)が多数あります。これらのいくつかが含まれます:

  1. Visual C++ Community Edition はIDEおよびMicrosoftのコンパイラです
  2. Code :: Blocks は軽量のIDEです。 Windowsでは、多少時代遅れのコンパイラが付属していますが、最新のコンパイラを自分でインストールできます。
  3. Eclipse CDT は、強力なクロスプラットフォームIDEです。独自のコンパイラーは同梱されていないため、別個のコンパイラーをインストールする必要があります。 Windowsでは、たとえば MinGW
  4. その他
  5. さらに、 http://ideone.comhttps://www.onlinegdb.com/ 、および http:/などの多くのオンラインコンパイラがあります。 /coliru.stacked-crooked.com/ 、プラス 多く (これらは主にアイデアを試したり、非常に小さなプログラムを作成するのに適しています)。
  6. Clang/LLVMGCC は両方とも フリーソフトウェア C++の最新バージョンをサポートするコンパイラーです。

残念なことに、一部の学校/教師は、この日でも年齢でも学生にTurbo C++の使用を強制するようです。残念ながら、これはこのコミュニティが修正できるものではありません。このような状況に陥った場合は、外部からの助けが得られないように準備してください。

155
n.m.

「Turbo C++」は、多数のコンパイラを意味します。この質問をするときは、バージョン番号を含めることが重要です。

  • バージョン3.1までのBorland Turbo C++は、古典的な青い背景IDEの純粋なMS DOSコンパイラでした。これらは、C++が標準化されるずっと前の1989年から1992年の間にどこかでリリースされました。これは、1998年に標準化されました。

    最も注目すべきは、標準の#include <iostream.h>ではなく#include <iostream>構文を使用したことですが、名前空間、テンプレートなどのC++機能の多くを網羅していませんでした。テンプレートライブラリSTLは標準の一部ではありませんそれでも、そのライブラリに関連するすべてのものは、後に標準となったものとはかなり異なっていました。

  • 90年代後半、ボーランドは、より優れた適合性を備えたいくつかのDOS/Windowsコンパイラをリリースしました。バージョン5までは、まだC++ 98への完全な準拠に苦労していましたが、これらのWindowsバージョンはC++ 98にかなり近いものでした。

  • 90年代後半、彼らはBorland C++ Builderを支持して「Turbo C++」という名前を廃止しました。これはIDEだけでなく、Delphiに基づく完全なRADツールでした。これらのコンパイラは、C++ 98以降のC++ 03に完全に準拠していました。

  • 2005年頃、ボーランドはコンパイラを製品ラインの一部として廃止しました。コンパイラーは「Codegear」になり、後にEmbarcaderoになりました。その頃、彼らは「Turbo C++」という名前のBorland Builderの無料バージョンをリリースしました。このバージョンはC++ 03に完全に準拠していました。

  • 現在、これらのコンパイラはEmbarcadero C++ Builderと呼ばれています。現在、いくつかのC++ 14で最大C++ 11をサポートしていると思います。 詳細はこちら

言うまでもなく、学生として、現代のコンパイラ以外は使用しないでください。 2018年にC++を学習するときに1991年からMS DOSコンパイラを使用するのは、単なる狂気です。それは逆効果であるだけでなく、直接有害であり、あなたを悪いC++プログラマにします。学校がTurbo C++ 3.1以前を使用することを強制している場合、学校は悪く、教師はひどく無能です。この投稿を彼らと彼らの校長にリンクしてください。

8
Lundin

Turbo C++は非常に古いコンパイラであり、GNU C++コンパイラとは少し異なります。共有したコードはGNUコンパイラーで完全に機能しますが、Turbo C++で実行するには、いくつかの変更が必要です。

1。ヘッダーファイルの名前をiostreamからiostream.hに変更します
2。また、「using namespace std」という行を削除します。TurboC++では必要ありません。変更されたコードは次のとおりです。

#include <iostream.h>

int main() 
{
  cout << "Hello, World!";
  return 0;
}
5
Yougansh Thakur