ちょっとコンパイラについて質問します。前から思っていたのですが、コマンドプロンプトでコンパイルする時、bcc32だけで、読み取ってくれるじゃないですか。あれってなぜです。ほかのファイル取り込むのはめちゃくちゃ長い名前かくか。ドラッグしてもってくるかしなくちゃいけないのに・・・。後、関数についても同じです。一体どこに入ってるんですか?コンパイラーの中?
うわ、うち終わった頃に地震が来ました。震度4か5くらいありますね。あれは。震源どこだろ。
コンパイラについて
Re:コンパイラについて
そうですね。
普通ファイルを指定する時は
「相対パス」か「絶対パス」が必要です。
しかしインストールされている操作にはパスが必要ありません。
入力されたキーがbcc32ならこの処理をしろと記憶されてますから。
コマンドプロンプトで「ipconfig」と入力すると、ネットワーク情報が表示されますね。
または「cd ..」と入力すると一つ上のフォルダへ移動します。
このようにOSに元々入っているコマンドを
「内部コマンド」といいます。
別にファイルを指定する事無く、コマンドで処理が実行されますね。
一方OSに元々ある機能ではないコマンドがありますね。
そう、「bcc32」などです。
これらはコマンドに対応した、補助記憶装置に保存してあるファイルが関連付けられています。
C言語をコンパイルするにはコンパイラが必要ですね。
そこでborlandのコンパイラをインストールされ、環境変数の設定をされたと思うんですけど、
実際どうやってコンパイルされているんでしょうか。
実はコンパイルしている時は、いつもこのファイルを実行しています。
C:\borland\bcc55\Bin\bcc32.exe
これがコンパイラの実態です。
いつもbcc32と入力しているのはこのファイルを呼び出すためです。
その為に環境変数の設定をするわけですね。
環境変数の設定にC:\borland\bcc55\Bin\と書いたはずですが
これはこのフォルダの中のbcc32をさしているわけです。
ですから
CドライブのCproというフォルダにdash.cというプログラムファイルをコンパイルする時、絶対パスで書けば
bcc32 C:\Cpro\dash.c
相対パスで書けば
bcc32 dash.c
と書いているはずです。これはBinフォルダのファイルを指定していることと他ならないわけですから
C:\borland\bcc55\Bin\bcc32.exe C:\Cpro\dash.c
このような記述でもいいはずですね。実際にこの入力でエンターを押して見ます。
C:\borland\bcc55\Bin\bcc32.exe C:\Cpro\dash.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
C:\Cpro\dash.c:
警告 W8070 C:\C\aa.c 7: 関数は値を返すべき(関数 main )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
ちゃんと警告も出ました。コンパイル出来ています。
includeについても同じです。
#include <stdio.h>
と書けば、あらかじめ指定されているフォルダを参照します。
#include "DxLib.h"
と書けば、現在いるフォルダを参照します。
<>で書くか""で書くかの違いです。
フォルダの階層とファイルを表しているわけですから
今のフォルダの下にあるDASHフォルダにあるDx.Lib.hをインクルードしないのなら
#include "DASH/DxLib.h"
と書くことも出来ます。
環境変数やインクルードの設定は見る事が出来ますよ。
デスクトップにある「マイコンピュータ」を右クリックして「プロパティ」>「詳細設定」(タブ)>「環境変数」
で設定されている環境変数が見れます。
私も高校の時よくわかりませんでした。
今もよくわかっていない可能性大ですw
普通ファイルを指定する時は
「相対パス」か「絶対パス」が必要です。
しかしインストールされている操作にはパスが必要ありません。
入力されたキーがbcc32ならこの処理をしろと記憶されてますから。
コマンドプロンプトで「ipconfig」と入力すると、ネットワーク情報が表示されますね。
または「cd ..」と入力すると一つ上のフォルダへ移動します。
このようにOSに元々入っているコマンドを
「内部コマンド」といいます。
別にファイルを指定する事無く、コマンドで処理が実行されますね。
一方OSに元々ある機能ではないコマンドがありますね。
そう、「bcc32」などです。
これらはコマンドに対応した、補助記憶装置に保存してあるファイルが関連付けられています。
C言語をコンパイルするにはコンパイラが必要ですね。
そこでborlandのコンパイラをインストールされ、環境変数の設定をされたと思うんですけど、
実際どうやってコンパイルされているんでしょうか。
実はコンパイルしている時は、いつもこのファイルを実行しています。
C:\borland\bcc55\Bin\bcc32.exe
これがコンパイラの実態です。
いつもbcc32と入力しているのはこのファイルを呼び出すためです。
その為に環境変数の設定をするわけですね。
環境変数の設定にC:\borland\bcc55\Bin\と書いたはずですが
これはこのフォルダの中のbcc32をさしているわけです。
ですから
CドライブのCproというフォルダにdash.cというプログラムファイルをコンパイルする時、絶対パスで書けば
bcc32 C:\Cpro\dash.c
相対パスで書けば
bcc32 dash.c
と書いているはずです。これはBinフォルダのファイルを指定していることと他ならないわけですから
C:\borland\bcc55\Bin\bcc32.exe C:\Cpro\dash.c
このような記述でもいいはずですね。実際にこの入力でエンターを押して見ます。
C:\borland\bcc55\Bin\bcc32.exe C:\Cpro\dash.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
C:\Cpro\dash.c:
警告 W8070 C:\C\aa.c 7: 関数は値を返すべき(関数 main )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
ちゃんと警告も出ました。コンパイル出来ています。
includeについても同じです。
#include <stdio.h>
と書けば、あらかじめ指定されているフォルダを参照します。
#include "DxLib.h"
と書けば、現在いるフォルダを参照します。
<>で書くか""で書くかの違いです。
フォルダの階層とファイルを表しているわけですから
今のフォルダの下にあるDASHフォルダにあるDx.Lib.hをインクルードしないのなら
#include "DASH/DxLib.h"
と書くことも出来ます。
環境変数やインクルードの設定は見る事が出来ますよ。
デスクトップにある「マイコンピュータ」を右クリックして「プロパティ」>「詳細設定」(タブ)>「環境変数」
で設定されている環境変数が見れます。
私も高校の時よくわかりませんでした。
今もよくわかっていない可能性大ですw
Re:コンパイラについて
相対と絶対という言葉の意味はわかります?
相対=互いに他との関係をもち合って成立すること。
物理で相対速度と絶対速度って出てきたと思います。
速さ60キロで進んでいる前の車を時速80キロで後ろからおいかけたら時速20キロで近づいているように見えますね。
これは相対速度が-20キロって事です。
相対性理論とかってそういう意味ですよね。
一方絶対っていうのはその逆で、他に比べる対称なく成立するもの。
つまり、先ほどの車の例でしたら時速80キロと60キロっていうのは、止まった人から見た、「絶対的」な値ですね。
この言葉を用いて絶対パス、相対パスという言葉を使っています。
今
graph.jpg
という画像ファイルが
C:\ProgramFile\game\image\graph.jpg
という階層にあると仮定します。
C:\ProgramFile\game のフォルダに今いるとします。
このフォルダから相対的に画像ファイルを指定するには
imgaeフォルダの中のgraph.jpgファイルと指定すればいいですね。
しかし絶対的な立場つまり一番上からみたら
C:\ProgramFile\game\image\graph.jpgと指定する必要があります。
つまり
「gameフォルダにいるとき、
"image\graph.jpg"
と指定するのが相対パス」
「どのフォルダにいても
"C:\ProgramFile\game\image\graph.jpg"
と指定するのが絶対パス」
です。絶対パスはどこの階層から指定しても大丈夫なわけです。
わかりました?
相対=互いに他との関係をもち合って成立すること。
物理で相対速度と絶対速度って出てきたと思います。
速さ60キロで進んでいる前の車を時速80キロで後ろからおいかけたら時速20キロで近づいているように見えますね。
これは相対速度が-20キロって事です。
相対性理論とかってそういう意味ですよね。
一方絶対っていうのはその逆で、他に比べる対称なく成立するもの。
つまり、先ほどの車の例でしたら時速80キロと60キロっていうのは、止まった人から見た、「絶対的」な値ですね。
この言葉を用いて絶対パス、相対パスという言葉を使っています。
今
graph.jpg
という画像ファイルが
C:\ProgramFile\game\image\graph.jpg
という階層にあると仮定します。
C:\ProgramFile\game のフォルダに今いるとします。
このフォルダから相対的に画像ファイルを指定するには
imgaeフォルダの中のgraph.jpgファイルと指定すればいいですね。
しかし絶対的な立場つまり一番上からみたら
C:\ProgramFile\game\image\graph.jpgと指定する必要があります。
つまり
「gameフォルダにいるとき、
"image\graph.jpg"
と指定するのが相対パス」
「どのフォルダにいても
"C:\ProgramFile\game\image\graph.jpg"
と指定するのが絶対パス」
です。絶対パスはどこの階層から指定しても大丈夫なわけです。
わかりました?
Re:コンパイラについて
なるほど、要するにもう最初から(コンパイラがインストされた時から)呼び出すような仕組みになってるってことですね。この辺りってC自体とは少し内容が違うので、少し不安な面もありますが、大体分かったと思います。
ありがとうございました!
ありがとうございました!