コンパイラの意味はわかるのですが、プリコンパイラが何をするのかがわかりません。プリが「~前の」という接頭語ということまでは調べたのですが・・・。
ご存知の方、教えてください。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

プリコンパイラとは名前の通り「コンパイラの前に使うもの」です。



コンパイラ型の言語ではまずソースをテキストファイルに人間が書き、コンパイラを通して実行ファイルを作っていきます。しかし、コンパイラが理解できるソースを直接全て人間が書くのはしばしば効率が悪かったり理解しづらかったりします。
そこで、ソースを書く時は人間に便利な仕様にしておいて、プリコンパイラでそれをコンパイラが理解できるソースに書き直すということをするわけです。

テキストエディタ
 出力:人間が書いたソース
 ↓
プリコンパイラ
 出力:コンパイラが理解できるソース
 ↓
コンパイラ
(出力:オブジェクトファイル)
(↓            )
(リンカ          )
 出力:実行ファイル

Cコンパイラとよく組み合わせて使われるプリコンパイラを挙げてみます。
Cプリコンパイラ
 他のみなさんが既に挙げているように、主に#で始まる行を処理します。
 いろいろなソースで共通して使われる部分を共有するための仕組み(include)や、マクロ処理、コンパイル時の条件分岐等、様々な処理をします。

C++プリコンパイラ
 C++のソースをCのソースに変換します。本来C++コンパイラは存在しないのでCソースに変換してからCコンパイルにかけます。しかし、最近はC++コンパイラも存在するのでその場合はCプリコンパイラと大差ないと思います。

f2cプリコンパイラ
 フォートランのソースをCのソースに変換します。需要の関係上Cコンパイラの研究が極端に進んだため、フォートランコンパイラを用意して使うよりもCソースに変換してからCコンパイラでコンパイルした方が性能がよかったり、メーカー側の開発環境の準備コストが低くすむといった現象の産物のようです。

この他の言語でも、コンパイラごとに1つ以上のプリコンパイラがあるといっても過言ではないと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
コンパイラごとに1つ以上のプリコンパイラがあるんですね。
参考になりました。
本当にありがとうございます。

お礼日時:2001/05/29 21:41

プリコンパイラは、プリプロセッサと同意です。


元来、例えば、C/C++コンパイラは、入力されたソースコード中に、
#define や #pragma などの記述があると、解析することが出来ません。

このような、元来コンパイラが解析することが出来ない「拡張された文法」
をコンパイラが理解できる「通常仕様のプログラムソースコード」に
変換する作業を行うのがプリコンパイラ(あるいはプリプロセッサ)です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
コンパイラが解析することが出来ない「拡張された文法」を理解できるように変換することだったんですね。
とても分かりやすかったです!
ありがとうございました。

お礼日時:2001/05/29 21:22

#付く処理のことですね。



先にコンパイルしておく
自分で、記述した処理ではないですよね。

言い方はちょっと変かもしれないですが、
自分のソースコードをコンパイルする前に
お約束として記述したようなことをコンパイルする
という、感じですかね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
皆さん本当に回答早いですね・・・。
とっても嬉しかったです。
また何かありましたらよろしくお願いします。

お礼日時:2001/05/29 21:20

C言語の場合#includeなど#がつく部分をしょりします

    • good
    • 0
この回答へのお礼

こんなに早く回答いただけるなんて感激です。
ありがとうございます。
プログラムに関して本当に無知なのでこれからもお尋ねすることがあるかもしれません。
その時はまたよろしくお願いします。

お礼日時:2001/05/29 21:16

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qあまのじゃくってどういう意味ですか?

あまのじゃくってどういう意味ですか?

Aベストアンサー

かっこつけたり、恥ずかしがったりして、自分の感情や思いをうまく表現できないこと。天邪鬼。

参考URL:http://ja.wikipedia.org/wiki/%E3%81%82%E3%81%BE%E3%81%AE%E3%81%98%E3%82%83%E3%81%8F

QPC内部に設定したパスワードの解読方法をご存知の方いらっしゃいますか?

おはずかしい話で恐縮ですが、パソコン内部に設定したパスワードを思い出すことができず困っています。 新しいパソコンに情報を移動させたいのですが、その際にパスワードを入力するように求められ、現在のパスワードを確認してみると***********という暗号がかかっていて理解不能です。

GmailやYahooメールアドレスであれば、メールアドレスを登録ところにパスワードを改めて送ってもらうことができますが、自分で数年前に設定したパスワードなので色々と思い当たるパスワードを次々と入力しているのですがエラーが表示されてしまいます。

どなたかウインドウズXP内部に保存しているパスワードを暗号を解いた状態で読むことができる方がいらっしゃいましたら教えていただけますでしょうか?

またはソフトウェアーで暗号を解除できるモノがあれば教えていただければ幸いです。 今のPCを使い続けている限りは問題ないのですがPCを買い換えたり、モバイル用(今回の利用目的)に設定する際に必要なためアドバイスをいただければ幸いです。

Aベストアンサー

PassBom ver0.06でできます。
http://q---p.hp.infoseek.co.jp/

Qどういう意味だと思いますか?

彼とLINEしていると
「返事がおくれてごめん、あまのじゃくなもので・・・」と
返事がありました。

たわいもないことをLINEでやりとりしているのですが

あまのじゃくになるというのは・・・
回答に困って返事が遅れるという意味でしょうか?

Aベストアンサー

返事が早かったり遅かったり、気まぐれだということじゃないですか?

遅れてごめんと謝ってくるところが全くあまのじゃくだとは思いませんけどね。

Qコンパイラについて

 今まで普通に使っていたフリーソフトのコンパイラで、少し長めのファイルを読み書きするようなプログラムをコンパイルしたのですが、exeファイルが途中で止まってしまいます。
 一方違う市販のコンパイラを使うと、コンパイル&実行共にうまくいきます。また、両者で作成されたexeファイルは容量も違い、後者の方はobjファイルも同時に作成されます。
 これは一体どういうことなのでしょうか?プログラムの内容は同じなのに、コンパイラによってexeファイルでエラーが出る、出ないがあるのでしょうか?

 また話とは逸れますが、プログラムの処理結果を扱う時に、txtファイルで表示させているのですが、必要な箇所だけ、コピー&ペーストするにはどうしたらいいでしょうか?
 例えば何万行のtxtファイルから(必要な箇所を検索等で探し)必要な箇所より上全部または下全部の部分だけを、消去したい時どうしたら手早く消去できるのでしょうか?今私がやっている方法ではctr+(pgup or pgdn)で選択部分を増やしていき消去!ですが、スピードが遅いです。ctl+Aだと全て選択になってしまいますし、どなたかいい方法ご存知な方いらっしゃらないでしょうか?

 今まで普通に使っていたフリーソフトのコンパイラで、少し長めのファイルを読み書きするようなプログラムをコンパイルしたのですが、exeファイルが途中で止まってしまいます。
 一方違う市販のコンパイラを使うと、コンパイル&実行共にうまくいきます。また、両者で作成されたexeファイルは容量も違い、後者の方はobjファイルも同時に作成されます。
 これは一体どういうことなのでしょうか?プログラムの内容は同じなのに、コンパイラによってexeファイルでエラーが出る、出ないがあるのでしょうか?

 ...続きを読む

Aベストアンサー

たとえば、大量にメモリを喰うプログラムなら、コンパイラが16bit/32bitかで使えるメモリが格段に違うので、うまく作らないと16bit環境でメモリ不足で止まってしまうこともありますね

大量行削除は、何行目かがわかっているなら、viやsedなどで 1,234 d や 123,$ d のようにしてアドレス指定で削除できます(コピー&ペーストではありませんが)
Windowsでも、使えるviやsedは探せば沢山ありますよ

Q「あまのじゃく」に相当する英語は?

和英辞書を引いてみますと、色々な英語が出て来ます。
perverse or cussed person; contrarian とか。
それらの英語を逆引きすると、「つむじ曲がりの」とか「意固地な」とかの日本語になって、本来の日本語の意味の「あまのじゃく」に相当しません。

皆がこう言ったらいつも反対あるいは、別のことを言いたがる人。あるいは、何かが評判になったりして、多数の人がそこに殺到する時、その風潮に絶対に乗ろうとしない人。

私が捉えている「あまのじゃく」ですが、こんな性格の人は英米圏には殆んどいないから、それに相当する英語がないと言うことでしょうか?
もし、近い英語があれば教えて下さい。

宜しくお願いします。

Aベストアンサー

 yes-man, yes-sayer(はいはいと言うことを聞く人)の対義語、no-man, no-sayer(違う違うとごねる人)が近いだろうと思います。

Q無料コンパイラ

今、HSPでプログラミングしています。
他の言語もやりたいと思うんですが、
コンパイラがタダのプログラミング言語があったらたくさん教えてください。
お願いします

Aベストアンサー

日本語プログラミング「ひまわり」です。
http://www.text2music.com/hima/
ソースコードも公開されています。
Delphiです。persnal版は無料?
http://www.borland.co.jp/delphi/personal/
アプリケーション開発に向いています。

日本語プログラミング言語 『TTSねお』 
http://hp.vector.co.jp/authors/VA021321/index.html
こちらはVBで開発されています。

ある面では、HSPより簡単でしょうか?

オブジェクトプログラミングをお考えなら、Rubyを勧めます。
http://www.ruby-lang.org/ja/
松本さんが開発されています。
Rubyで検索すると山ほどヒットします。
世界中の人々がネットで育てられた言語です。
書籍も最近は沢山出版されています。
これからの言語です。是非チャレンジして下さい。

参考URL:http://www.ruby-lang.org/ja/

Qあまのじゃくな男性

中学生男子に
あまのじゃくな人は結構いますか?

あと中学生男子は
普通に女子の肩に触れたりは
するもんですか?

回答お願いします(*´∇`*)

Aベストアンサー

中学生はあまのじゃくが多い年代でしょう。

女の子に対し興味が無いようなふりをしたり、悪態をついたり。

肩に触れるのはある程度親しいしるしだと思います。

Qコンパイラの構文解析(上向き)の習得

コンパイラの仕組みについて興味があり勉強しています。
構文解析について下向きの再帰降下法についてはコンパイラの入門書などにも説明があり、簡単なものであれば自分でコードを書けるレベルになりました。

次にyaccなどに使用されているという上向きの構文解析法(LR/SLR/LALR等)を学びたいと思いましたが、良い資料が見つかりません。
具体的には理論の説明(集合の式等が理解しにくいです)だけではなくて、簡単な式などを評価するソースコードや実際の動作が解説されているものがあれば嬉しいです。

ネット上あるいは市販の3000円台程度の書籍で良いものがありましたらご紹介いただけると嬉しいです。
よろしくお願いします。

Aベストアンサー

LR構文解析についてまじめに勉強するなら
 プログラミング言語処理系 ( http://www.amazon.co.jp/dp/4000103458 )
とかには事例も含めて細かく書かれていたと思うけど、集合の式は出てくるしアルゴリズムは書いてあってもソースコードはないので難しいかな。価格も5千円ほどするし。

あとは
 コンパイラ ( http://www.amazon.co.jp/dp/4274130134 )
とかかな。こっちは3千円強で買える。
このくらいしか知らないや。

なお、先の回答に書いた解析表現文法(PEG)とPackrat parserについては日本語の書籍を知りません。ただパーサの実物は一杯あるようなので、ソースを読むのが早いでしょう。

Qあまのじゃく・・・

なんとなく、あまのじゃくな性格です。
この性格ってどうしてこうなるの?
解決する方法とかありますか?

Aベストアンサー

同じくあまのじゃくです(笑)
#1さんのおっしゃること、確かに当たってるような気が・・・。
私は最近は、思わず言い返してしまっても
後で家に帰ってから反省をするようにしています(笑)
あまり役に立つか分かりませんが
参考程度に読んでおいていただけるとありがたいです。

QFortranのコンパイラ(無料でXP対応)探してます

表題の通り、Fortran(77?)の無料のコンパイラを探しています。
大学の研究室でFortranを使っているのですが、
なかなか大学に顔を出せないこともあり、自宅のパソコンで研究を進めようと思っているのですが…。

OSがWINDOWS XPでftn77.exeというコンパイラを使ってみようとしたところ、
XPには対応していないということが理由なのか、インストールできませんでした。
(使おうとするとその都度インストールが始まるだけで使えません)

簡単にコンパイルする方法があれば、それでもけっこうです。
どなたかご存知の方が見えましたら、アドバイスをお願いします。

Aベストアンサー

http://www.g.dendai.ac.jp/lecture/fortran/fort01.html

FTN77はXPでも使えるようですよ。


人気Q&Aランキング

おすすめ情報