2015-12-10 5 views
7

私は、明らかに、標準化を開始し、iostream.hからiostreamに移動し、他のインクルードと同様に古いC++コードを使用しています。それは、コマンドラインを介して、ちょうどiostreamiostream.hのインスタンスを変更するために、プリプロセッサを使用することが可能かどうしたがって、#include <iostream.h>しようとすると失敗する++グラムの私の比較的現代版など#defineを使用して#includeファイル名を変更することはできますか?

私は興味があります。私は-Diostream.h=iostreamをg ++に追加しようとしましたが、インクルードステートメントを変更していないようです。

プリプロセッサがインクルードステートメントを変更できないと思いますか?

+1

好きなスクリプト言語の単純なスクリプトではないでしょうか? – StoryTeller

+4

単にコードをビルドしたり、多くのエラーを出したり、それらのエラーを修正したりするのはなぜですか?確かに、古い標準化されたコンパイラによってコードを構築することはできませんが、少なくとも現代のコンパイラを現在も将来も使用することは可能です。 –

+1

グローバル検索を行い、置き換えてください。 'using namespace std;'や適切な資格を追加するなどの他の修正も必要です。これは自動化できるものもあれば、実際にはできないものもあります。 –

答えて

8

#includeステートメントには3つの形式があります。 pp-tokensは、最初の2つの形式のいずれかに展開する必要があり

# include "h-char-sequence" new-line 

# include <h-char-sequence> new-line 

# include pp-tokens new-line 

あなたは使用することができます

#include IOSTREAM 

、あなたが作業しているコンパイラのバージョンに応じて、-DIOSTREAM="<iostream>"または-DIOSTREAM="<iostream.h>"でコンパイルします。

ただし、

#include <iostream.h> 

を使用して-Diostream.h=iostreamでコンパイルすることはできません。

これにはいくつか問題があります。

  1. iostream.hは有効なプリプロセッサマクロではありません。
  2. #includeステートメントの形式は、マクロ展開には適していません。

新しいC++ヘッダーを使用するようにコードベースを移行する準備ができている場合は、新しいC++ヘッダーにすべての古いスタイルのC++のヘッダーを変更するには、お気に入りのスクリプトメソッドを使用したほうが良いでしょう。

関連する問題