- ベストアンサー
dos.hについて
今、私の使っているパソコンはOSがwindowsXPで、コンパイラはBorlandBCCです。 大学の図書館で借りた、かなり古いと思われる(平成4年に第1刷発行で、この本自体は平成5年の第4刷発行)c言語のプログラムの本を読んでいるのですが、その中のグラフィックを扱う部分で、 <dos.h> のヘッダの中に outp() outport() int86() の定義がされている とあるのですが、本に書いてある通りにコーディングしてみても<dos.h>をインクルードしても、これらの関数は定義されていないみたいなんです。 これは本が古すぎて、現在は変わっているからなんでしょうか? また、変わっているなら、これらの関数は、現在はどんな関数と置き換わっているんですか? ちなみに、私はOSに関しての知識はそれ程持ち合わせてはおりませんので。 こんな私に誰かご教授お願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.1です >いろいろと深い事情がおありのようですね。 >初心者の私には、今の知識では理解は不可能なようです。 そんなに深い事情でもないですよ。 単に、OS(とドライバー)がH/Wの存在を隠蔽して共通の関数で制御できるようになったため、直接H/Wを制御する命令が使用できなくなったのです。 例えば、「PC」と一括りにしても、使用しているCPUやグラフィックボード等のH/Wは違ってきます。 これを直接制御しようとするのはとても難しいことです。そのため、ユーザーからは「同じ命令(関数)」で実行できるように構成が変わってきたのです。 ちなみに、「組み込み系」といわれる分野は直接H/Wの制御を行うものがまだまだたくさんあります。 >OSについて学ばなければならないようですね。 >オススメのOSを勉強できる本などを教えていただけるとありがたいです。 「OSの何を」という部分にもよりますね。 普通にWindowsアプリを作るだけ知らなくても特に困ることはありませんから。 私はドライバーを組むことが多いので、そのあたりの技術書と市販の「PCの仕組み」関連の本を読み漁ってなんとなく覚えました。 組み込み系は、iTronやSymbianOSなど専用に本は出てますが高価です。
その他の回答 (2)
コンパイラがはき出すターゲットが変わっているから BCCやVC++には存在しません単純に使えないから それらを使うには仮想DOS上で動くバイナリを出して貰えないと使えないけどBCCやVC++が出すのは32/64ビットWindows用バイナリ 逆にLSI C-86とかDDKのdos.hには定義されてます 16ビット向けコンパイラだから
お礼
要はwindowsでは使えないという事ですね。 16ビットと32ビットと64ビットの違いも分からない私が理解できるはずもないですねww 知っているのは8ビットで1バイトみたいな知識ぐらいですからww ご回答ありがとうございました。
- arain
- ベストアンサー率27% (292/1049)
15年以上も前の発行だと、もろにMS-DOS時代の直接ハードポートを叩くかGLIOを制御するようなプログラムのようですね。 >これは本が古すぎて、現在は変わっているからなんでしょうか? 変わっているといえば変わっています。 >また、変わっているなら、これらの関数は、現在はどんな関数と置き換わっているんですか? 存在自体がありません。 正確にはWindows系OSを利用する場合には使用しません(というかできないといった方が正しい)。 その部分のプログラムはあきらめた方がよいです。 とりあえず、もっと新しく発行された本(最低でも10年以内)を探してください。
お礼
なるほど。 いろいろと深い事情がおありのようですね。 初心者の私には、今の知識では理解は不可能なようです。 OSについて学ばなければならないようですね。 オススメのOSを勉強できる本などを教えていただけるとありがたいです。 回答ありがとうございました。
お礼
追加回答ありがとうございます。 専門の高価な本は読んでも途中で挫折しそうですね… とりあえず、僕はWindowsプログラミングを作れるようになれば良いのでプログラミングの本を読み漁ろうと思います。 でも、あれですね。 プログラミングの入門書を読んだだけでは有用なプログラムって書けないものですよね。プログラムで何か面白い事をしようと思ったら、それについての知識がないとなかなかキツいものです。 今更ながらわかりましたです。 回答ならびに、有用なアドバイスありがとうございます。