• ベストアンサー

dos.hについて

arainの回答

  • arain
  • ベストアンサー率27% (292/1049)
回答No.1

15年以上も前の発行だと、もろにMS-DOS時代の直接ハードポートを叩くかGLIOを制御するようなプログラムのようですね。 >これは本が古すぎて、現在は変わっているからなんでしょうか? 変わっているといえば変わっています。 >また、変わっているなら、これらの関数は、現在はどんな関数と置き換わっているんですか? 存在自体がありません。 正確にはWindows系OSを利用する場合には使用しません(というかできないといった方が正しい)。 その部分のプログラムはあきらめた方がよいです。 とりあえず、もっと新しく発行された本(最低でも10年以内)を探してください。

gachinco
質問者

お礼

なるほど。 いろいろと深い事情がおありのようですね。 初心者の私には、今の知識では理解は不可能なようです。 OSについて学ばなければならないようですね。 オススメのOSを勉強できる本などを教えていただけるとありがたいです。 回答ありがとうございました。

関連するQ&A

  • dos.hについて

    outportbなどの関数を使用しようとして dos.hをインクルードしているのですが bccでコンパイルするとエラーをはきます。 原因がわかる方いれば教えてください。 下記にソースを載せています。 #include <dos.h > void outportb(unsigned int portid,unsigned char value){ _asm mov edx,portid _asm mov al,value _asm out de,al } エラーは エラー E2451 080311-1.c 6: 未定義のシンボル de(関数 outportb ) *** コンパイル中に 1 個のエラーが発生しました *** とでます。

  • dos.hについて

    いま「Windowsコマンドプロンプトでマスター 書く!動かす!覚える! C言語100本勝負」というタイトルの本をサンプルプログラム集として使っているのですが、そのサンプルの中にdos.hを使ったプログラムが結構な数あります。コンパイルしたプログラムは正常に動くのですが、コンパイル時に次のような警告が出ます。 警告 W8053 hoge.c 18: '_dos_findfirst' は古い形式です(関数 main ) 警告 W8053 hoge.c 22: '_dos_findnext' は古い形式です(関数 main ) (コンパイラ:bcc32、OS:Windows XP SP2、コマンドプロンプトで実行した) ネットで調べたところ_dosで始まるような関数は現在ではほとんど使われていないようです。 そこで質問なのですが、MS-DOSの時代に使われていたような関数はWindows XPや2000等のコマンドプロンプトでも問題なく実行できるのでしょうか(自分の場合は実行できたが、警告が出た。)? 自分の推測ではコマンドプロンプト用の新しい関数が用意されているのではないかと思うのですが・・・ 詳しい方、できれば教えてください。 (正直、「コマンドプロンプトでマスター」とタイトルで謳っているのに内容が「MS-DOS」での説明とは少しだまされた気分です。)

  • 昔のgraph.hというファイル

     昔のMicroSoft社のコンパイラであるQuickCにgraph.hというヘッダファイルがあったらしいのですが、現在のVisualC++にはありません。    また、Borland社の昔のTurboCというコンパイラには、graphics.hというヘッダファイルがあったみたいなのですが、現在のC++Builderには含まれておりません。  どちらもDOS環境のグラフィクスのためのヘッダファイルらしいのですが、 現在それに相当するヘッダファイルはあるのでしょうか?  誰か知っている人がいたら教えてください。

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

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

  • math.hに含まれる関数が使えない

    math.hヘッダーをインクルードして、sqrt()やcos()の関数を使おうとすると、関数sqrt()は定義されていませんとエラーが出て正常にコンパイルできません。 他のヘッダー(stdio.hやstring.hやstdlib.h)の関数は正常に使えてますので、パスの設定は問題ないと思うのですが…… 解決方法はあるのでしょうか?宜しくお願いします。

  • XSUB.h、EXTERN.h、perl.h について

    ◆状況 C言語+Perlで作られている機能を、 Perlだけのソースに移行しようとしています。 ◆困っていること 今まで、知らない言語を読む際、 ネットや本にある、関数一覧などから、 「そのプログラムで何をしようとしているか?」 を読み取れていたのですが、 C言語+Perlにおける、下記の関数??と思われるものなどについて、 全然、資料/情報が見つからず、困っています。 具体的には、 dXSARGS Perl_croak SvPV_nolen XPUSHs PUTBACK などです。 (恐らくは、EXTERN.h、perl.h、XSUB.h というヘッダファイルに定義されているのかも知れませんが。) stdio.h などにあるような、fopen関数だったり、fscanf関数などのようなものは、 いくらでもネット上/本に載っているのですが、上述のものについて、全然見つかりません、、 /***********************************/ また、includeファイルに、定数、構造体の定義、関数のプロトタイプ、マクロの定義、が記述されると認識していますが、 しかしながら、 ソース上に出てくる「Perl_croak」という箇所は、おそらく、Perl_croakという関数のように思われました。 と、すると、 includeファイルに、引数&戻り値などのインターフェース仕様だけ書かれているのではなく、 Perl_croak関数が行う、「処理の実態」も、ヘッダファイルに記述されているということでしょうか?? また、 dXSARGS という箇所については、戻り値を受け入れるような記述もなく、 dXSARGS; と一行書かれているだけなのですが、関数ではなく、戻り値を必要としないサブルーチンということでしょうか? /***********************************/ どなたか、資料/情報や、もしくは調べ方などをご存知の方がいらっしゃれば、 ご教授お願いできませんでしょうか? 些細な情報でも構いませんので、宜しくお願い致します。。

  • DOSの文字の色を変える方法。

    C言語でDOSプログラムを作っているのですが、 文字の色を変えることはできるのでしょうか? #include <stdio.h> void main(){ printf("あいうえお"); } コンパイラはボーランドで、DOSはXPのものとし、 文字を赤くするとしたら上の例ならどのように 書けばよいのでしょう?

  • ヘッダーファイルについて

    //DMusic7Ex.h あるプログラムを解析しています。 //コンパイラ設定 //多重定義防止 #pragma once //ファイルインクルード #include <dmusicc.h> #include <dmusici.h> //型定義 typedef IDirectMusicPerformance* LPDIRECTMUSICPERFORMANCE; typedef IDirectMusic* LPDIRECTMUSIC; typedef IDirectMusicLoader* LPDIRECTMUSICLOADER; typedef IDirectMusicSegment* LPDIRECTMUSICSEGMENT; //関数プロトタイプ 1・DMusic7Ex.cppを作らず他の関数で、このヘッダーファイルをインクルードする手法は一般的なのか? 2・なぜ関数プロトタイプを記述しないで、このタイプ宣言を他のファイルで使用するのは一般的なのか?

  • C?DOS? プログラミングでwav,midiを鳴らしたいのですが

    初投稿させていただきます。 現在大学にてC言語をプログラミング中で、明日発表が控えているのですが、wavやmidiを再生する方法がわかりません。 WINDOWSでは #include <mmsystem.h> //何処かイベントなどで sndPlaySound("ファイル名", SND_SYNC); という方法で鳴らせるらしいのですが、鳴りません。 同室にいる詳しい学生に見てもらったところ、コンパイラがウィンドウズ上で立ち上がっているけれども、実際はDOSで動作しているからこのやり方ではできなくてわからない、とのことでした。 この意味も私にはよくわからないのですが。 この環境で、「プログラミング上で、入力があったときに音声ファイルを鳴らす方法・関数?」をどなたかご教授下さい。 環境 ■OS WINDOWS98 ■コンパイラ TC  ターボシーと教官が言っていた。ショートカットはMSDOSのロゴ。 ■上のやり方でコンパイルしたときのエラー  Unable to open include file 'MMSYSTEM.H' Undefined symbol 'SND_ASYNC' in function print_data

  • string.h とかって何?

    #include で最初に含むファイルっていったい何者なんでしょうか? rand()を使うにはstdlib.hをインクルードしますし、printfのような入出力関係にはstdio.hを、文字関係ならstring.hを・・。 それはわかるのですが、これは、それぞれのヘッダファイルに自作関数の集合のようなものが入っていると考えるのは間違いなんでしょうか? 例えば、strcpyを使用するにはstring.hをインクルードするべきですが、 それはstring.hの中に char *strcpy(char *s1, const char *s2) {   char *p = s1;   while (*s1++ = *s2++)     ;   return (p); } みたいな記述が入っていると想像するのは間違いですか? 自作関数を集めてヘッダファイルにする事出来ますけど、これらは違うんですか? これだとprintfとかどうやって実装しているんだって思ってしまって・・。 直接stdio.hを開いてみたものの意味不明で、其の中にさらにある.hファイルも開いてみましたがよくわかりませんでした・・。 すみませんが、よろしくお願いします><