- ベストアンサー
dos.hについて
今、私の使っているパソコンはOSがwindowsXPで、コンパイラはBorlandBCCです。 大学の図書館で借りた、かなり古いと思われる(平成4年に第1刷発行で、この本自体は平成5年の第4刷発行)c言語のプログラムの本を読んでいるのですが、その中のグラフィックを扱う部分で、 <dos.h> のヘッダの中に outp() outport() int86() の定義がされている とあるのですが、本に書いてある通りにコーディングしてみても<dos.h>をインクルードしても、これらの関数は定義されていないみたいなんです。 これは本が古すぎて、現在は変わっているからなんでしょうか? また、変わっているなら、これらの関数は、現在はどんな関数と置き換わっているんですか? ちなみに、私はOSに関しての知識はそれ程持ち合わせてはおりませんので。 こんな私に誰かご教授お願いいたします。
- みんなの回答 (3)
- 専門家の回答
関連する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 個のエラーが発生しました *** とでます。
- ベストアンサー
- C・C++・C#
- 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」での説明とは少しだまされた気分です。)
- ベストアンサー
- C・C++・C#
- 昔のgraph.hというファイル
昔のMicroSoft社のコンパイラであるQuickCにgraph.hというヘッダファイルがあったらしいのですが、現在のVisualC++にはありません。 また、Borland社の昔のTurboCというコンパイラには、graphics.hというヘッダファイルがあったみたいなのですが、現在のC++Builderには含まれておりません。 どちらもDOS環境のグラフィクスのためのヘッダファイルらしいのですが、 現在それに相当するヘッダファイルはあるのでしょうか? 誰か知っている人がいたら教えてください。
- ベストアンサー
- C・C++・C#
- windowsプログラムのヘッダーについて
SDKを用いてWindowsプログラムを作っています。 #include <ctime> とインクルードした上でclock()関数を使用したのですが、コンパイラから未定義の関数を呼び出したことになってエラーが出てしまいます。他のヘッダーも含めC++の標準ライブラリはインクルードできないのでしょうか? ちなみに、<time.h>でインクルードすればコンパイルできます。
- ベストアンサー
- C・C++・C#
- math.hに含まれる関数が使えない
math.hヘッダーをインクルードして、sqrt()やcos()の関数を使おうとすると、関数sqrt()は定義されていませんとエラーが出て正常にコンパイルできません。 他のヘッダー(stdio.hやstring.hやstdlib.h)の関数は正常に使えてますので、パスの設定は問題ないと思うのですが…… 解決方法はあるのでしょうか?宜しくお願いします。
- ベストアンサー
- C・C++・C#
- 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; と一行書かれているだけなのですが、関数ではなく、戻り値を必要としないサブルーチンということでしょうか? /***********************************/ どなたか、資料/情報や、もしくは調べ方などをご存知の方がいらっしゃれば、 ご教授お願いできませんでしょうか? 些細な情報でも構いませんので、宜しくお願い致します。。
- ベストアンサー
- C・C++・C#
- DOSの文字の色を変える方法。
C言語でDOSプログラムを作っているのですが、 文字の色を変えることはできるのでしょうか? #include <stdio.h> void main(){ printf("あいうえお"); } コンパイラはボーランドで、DOSはXPのものとし、 文字を赤くするとしたら上の例ならどのように 書けばよいのでしょう?
- ベストアンサー
- C・C++・C#
- ヘッダーファイルについて
//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・C++・C#
- 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
- ベストアンサー
- C・C++・C#
- 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ファイルも開いてみましたがよくわかりませんでした・・。 すみませんが、よろしくお願いします><
- 締切済み
- C・C++・C#
お礼
追加回答ありがとうございます。 専門の高価な本は読んでも途中で挫折しそうですね… とりあえず、僕はWindowsプログラミングを作れるようになれば良いのでプログラミングの本を読み漁ろうと思います。 でも、あれですね。 プログラミングの入門書を読んだだけでは有用なプログラムって書けないものですよね。プログラムで何か面白い事をしようと思ったら、それについての知識がないとなかなかキツいものです。 今更ながらわかりましたです。 回答ならびに、有用なアドバイスありがとうございます。