22

Ubuntuでg++と(最終的には)Clangを使用してコマンドラインからC++プログラムをコンパイルする方法を理解しようとしています。

MakeFilesを説明するウェブページを見つけました。私は彼らの指示に従っています。http://mrbook.org/tutorials/make/

4つのサンプルファイルをそれぞれのディレクトリにダウンロードしました。

  • main.cpp
  • hello.cpp
  • factorial.cpp
  • 関数.h

次に、MakeFileを使用せずに手動でコンパイルする方法の例を実行しました。

g++ main.cpp hello.cpp factorial.cpp -o hello

上からコマンドを実行すると、g++から次のエラーが発生しました。

main.cpp:1:22: fatal error: iostream.h: No such file or directory
compilation terminated.
hello.cpp:1:22: fatal error: iostream.h: No such file or directory
compilation terminated.

c ++を作成した私の唯一の経験は、VS C++ExpressやCodeBlocksなどのIDEを使用することです。コンパイラはiostream.hが何であるか、そしてそれをどこで見つけるかを知っているはずではありませんか?

プログラムがコンパイルされるように、このエラーを取り除くにはどうすればよいですか?

助けてくれてありがとう。

4

3 に答える 3

43

C ++言語がISOによって標準化される前は、ヘッダーファイルの名前<iostream.h>はでしたが、C ++ 98標準がリリースされたときは、名前がちょうど<iostream>(なし.h)に変更されました。#include <iostream>代わりに使用するようにコードを変更すると、コンパイルされます。

また、事前に標準化されたC ++には名前空間が存在しなかったため、各ソースファイルにステートメントを追加するusing namespace std;(またはiostream関数/オブジェクトへの各参照の前に指定子を付ける)必要があります。std::C ++ 98は、標準ライブラリの関数とオブジェクトをstd名前空間内に配置します。

于 2012-10-27T18:51:24.527 に答える
14

<iostream.h>C++ 標準に組み込まれなかったため、標準の C++ ヘッダーにはなりませんでした。

代わりに<iostream>、1998 年に を取得しました。

<iostream.h>やなどの非標準的なものを使用する教材は避けてvoid mainください。

ただし、現在の標準化前のコードの実用的な解決策として、置き換えを試みることができます。

#include <iostream.h>

#include <iostream>
using namespace std;

動作する保証はありませんが、動作する可能性があります。

于 2012-10-27T19:06:43.633 に答える