• 締切済み

旧c++のプログラムを動かす方法を教えてください

c++の実行時にエラーが出てしまいます。 エラーの原因をインターネットで検索しまして、原因は「iostream」ではなく旧バージョンの「iostream.h」をインクルードしているためであることが判明しました。 私はプログラムの記述を変更することなく、旧c++のプログラムを実行したいのですが、やり方が分かりません。 旧c++のコンパイラを探してインストールしようと考えましたが、どれが旧c++のコンパイラなのか分かりませんでした。 解決方法をご存知の方がいらっしゃいましたら、回答よろしくお願いします。 pc環境はVine linux4.2です。

みんなの回答

回答No.3

今更感がありますが、STLPortを試す等。 http://www.stlport.org

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.2

g++ をお使いでしたら、 ソースファイルの最初の方で どんなヘッダファイルをどの順でインクルードして あるかを見て、旧C++仕様か、新C++仕様かを判別してコンパイルしてくれるみたいです。 ので、 判別のヒントになるようなヘッダファイルのインクルードの仕方をしてみては、 如何でしょう。 または、コンパイルオプションで、使用するC++の仕様を指定する事も出来ます。 ---------------------------------------------------------------------- // 旧C++仕様を利用する場合 #include <iostream.h>  // を最初にインクルードしておく #include <string>    // stringをインクルードする場合は後に置く ---------------------------------------------------------------------- // 新C++仕様を利用する場合 #include <iostream>   // を最初にインクルードしておく #inlucde <string>    // stringをインクルードする場合は後に置く ---------------------------------------------------------------------- 旧C++仕様を利用する場合と、 新C++を利用する場合の、stringヘッダが示すファイルの意味が変わっている事 がポイントです。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

とりあえず iostream を #include して, using namespace std; で逃げてみるかなぁ.... それでうまくいく保証はないんだけど.

関連するQ&A

  • C++での <iostream.h>と<iostream>とusingnamespaceの関係等を教えてください。

    どうでもいい質問なのですが… C++で色々とソースを打っていると気づいたのです。 #include <iostream.h>とするとusing namespace std;の一文を書かなくてもコンパイルエラーになりません。 また、逆に#include <iostream>とするとusing namespace std;の一文が必要になります。 だから、h(ヘッダファイル)の.hは必要なのかな?と思い、#include <cstdlib.h>とするとコンパイルエラーになります。 なにか理屈がわかりません。コンパイラはVC++6.0です。よろしくご回答の方お願いいたします。

  • このプログラムを見てください(C言語) m( _ _ )m

    現在乱数を使ったプログラムを作っています。 下のプログラムでコンパイルではエラーがでませんが、実行するとデバッグエラーが出てきます。コンパイラにはbccを使っています。恐らく原因は別の関数でbに値を代入してそれをaに代入しているからだろうと思いますが、なぜこれがいけないのかが分かりません。 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <conio.h> int ran, a=1, b, c; void test(void){ b=8; } void main(){ srand(time(NULL)); a=b;//ここを無くすとなぜかエラーが出ない。 while(1){ ran=rand()%(a*2)+1; switch(ran){ case 1: c=1; break; case 2: c=1; break; case 3: c=1; break; case 4: c=2; break; case 5: c=2; break; case 6: c=3; break; case 7: c=3; break; case 8: c=4; break; } printf("%d",c);printf("何か押してください\n");getch(); } }

  • コンパイラの制限 : ヒープの領域を使い果たしました

    最近、標準C++の勉強を始めたばかりなのですが、以前にC++で書いたプログラムのヘッダを標準C++に変更して(例えば、#include<iostream.h>を#include<iostream>に変える)コンパイルしたところ、 「コンパイラの制限 : ヒープの領域を使い果たしました; 上限を設定するために /Zm オプションを使用してください。」とのエラーがでました。このエラーは以前は出なかったもので、以前も今回もコンパイラーはVC++6.0です。なぜ、ヘッダを変えただけでこのようなエラーが出たのでしょうか。漠然とした質問で答えようがないかもしれませんが、ご存知の方いらっしゃったら教えてください。お願いします。

  • Cのプログラムがコンパイル出来なくて困っています。

    初めまして、こんにちは。初心者ですがよろしくお願いします。 Cのプログラムがコンパイル出来なくて困っています。 プログラムの内容は #include<stdio.h> main(void) { printf("test\n"); return 0; } という簡単な内容で問題点はないのですが、以下のようなエラーが出てきます。 ビルド開始 C:\FF90\bin\fcc /c @C:\DOCUME~1\root\LOCALS~1\Temp\lyliomph.src Bad file descriptor cpp: 重大なエラー: 致命的なエラーを検出しました。翻訳を終了します。 ビルド処理を中断しました。 ビルド中断 他のパソコンでは実行する事が出来るのですが私がいつも使用しているパソコンのみ実行する事が出来なくて困っています。 使用しているコンパイラは「Fortran 90/C Workbench 開発マネージャ V1.0L21」です。 エラー2行目の「C:\FF90\bin\fcc /c @C:\DOCUME~1\root\LOCALS~1\Temp\lyliomph.src」に何かあるのかと思い、見たのですがそれらしき物も見当たりません。 環境変数もちゃんと設定していますし、他のコンパイラ(CPad for Borland C++Compiler や cygwin)でも実行する事が出来なく、また、上記のプログラム以外のプログラムでも同じエラーが出てきます。 もう私程度の知識ではどのような原因があるのか分からず、八方塞で困っています。 言葉足らずな部分が多々あるかと思いますがどうかよろしくお願いします。

  • LINUXでのプログラムの実行方法(超初歩的な質問です)

    小生はLINUXをはじめて扱うものです。超初歩的な質問で恐縮ですが、LINUXでプログラムを実行するのはどうすればよろしいのでしょうか。Windowsのように、プログラムファイルをダブルクリックしても、LINUXでは実行されないようです。LINUXのバージョンはVINE3.0です。

  • C/C++のインラインアセンブラに関する質問

    使っているコンパイラはボーランドのフリーのC++のコンパイラなのですが インラインアセンブラのソースをコンパイルするとこんなエラーメッセージがでます( 警告 W8002 roger.cpp:8アセンブラを使う為コンパイラを再起動した(関数(main()) エラーE2133 ’tamsm32.exe'を実行できない とエラーメッセージが出ます 調べても解決方法がわからないのですが 解る方は教えてください ついでにコンパイルしようとしたソースは↓です #include<iostream.h> void main(){ int w=8; int w2=5; _asm{ mov eax,w mov edx,w2 }; cout<<w<<endl; };

  • llc system("dir").c

    llcのDOSコンパイラでsystem("dir");というソースを 含めると、その部分で実行時に 正しいコマンド インタープリタの名前を入力してください. (例 : C:\COMMAND.COM) >> というメッセージが表示されます。 #include <iostream.h> int main() { system("dir"); return 0; } このソースをDOSコンパイラ用に書き換えたいのです。 #include <stdio.h> int main() { system("dir"); return 0; } このようにするとllcでコンパイルできますが、おそらく #include <stdio.h>しか使っていないためにsystem関数がうまく 動作しないようです。 どうしたらシステム関数のようなことができますか?

  • windowsプログラムのヘッダーについて

    SDKを用いてWindowsプログラムを作っています。 #include <ctime> とインクルードした上でclock()関数を使用したのですが、コンパイラから未定義の関数を呼び出したことになってエラーが出てしまいます。他のヘッダーも含めC++の標準ライブラリはインクルードできないのでしょうか? ちなみに、<time.h>でインクルードすればコンパイルできます。

  • c++でセグメンテーション違反

    c++言語を勉強しているものです。 配列を関数の引数として扱うプログラムを作ろうとしているのですが、 コンパイルが通ったかと思えば実行すると 「セグメンテーション違反です」 と表示されて異常終了してしまいます。 原因がさっぱりわかりません。 OSはLinux(RED HAT ENTERPRISE LINUX 5)、コンパイラはg++(バージョン 4.1.2)です。 これがソースコードです。 #include <iostream> using namespace std; #define BUFSIZE 1024 #define MSG "msg" void test(char buf[]) { //bzero(buf,BUFSIZE); LEGACY memset(&buf, 0, BUFSIZE); sprintf(buf, "%s\n", MSG); cout << buf; cout << "(Terminated)" << endl; return; } int main() { char buf[BUFSIZE]; test(buf); return 0; }

  • エラー 'iostream.h' : No such file or directory

    当方VC++初心者です。3Dモーションセンサーを購入してその角度等の値をファイルに書き込みすることをしようとしています。 センサーに付属しているVC++用のサンプルプログラムをコンパイルしたところ、 fatal error C1083: include ファイルを開けません。'iostream.h' : No such file or directory というエラーが出ます。 #include <iostream.h>が関係していると思い、 #include <iostream>にしてみたり、#include <iostream.h>を消してコンパイルすると、エラーがたくさん出てくるので#include <iostream.h>に意味があると思われますが、そのくせ#include <iostream.h>というファイルがないというのはどういうことなのかよくわからず対処できずに困っています。 Microsoft Visual Studio .net 2003を使っています。

専門家に質問してみよう