-PR-
解決
済み

プリコンパイラとは?

  • 困ってます
  • 質問No.82856
  • 閲覧数14832
  • ありがとう数9
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 79% (76/96)

コンパイラの意味はわかるのですが、プリコンパイラが何をするのかがわかりません。プリが「~前の」という接頭語ということまでは調べたのですが・・・。
ご存知の方、教えてください。よろしくお願いします。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.4
レベル10

ベストアンサー率 50% (52/103)

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

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

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

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

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

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

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

お礼率 79% (76/96)

ご回答ありがとうございます。
コンパイラごとに1つ以上のプリコンパイラがあるんですね。
参考になりました。
本当にありがとうございます。
投稿日時 - 2001-05-29 21:41:01
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル10

ベストアンサー率 18% (35/185)

C言語の場合#includeなど#がつく部分をしょりします ...続きを読む
C言語の場合#includeなど#がつく部分をしょりします
お礼コメント
hiro1120

お礼率 79% (76/96)

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


  • 回答No.2
レベル13

ベストアンサー率 18% (351/1917)

#付く処理のことですね。 先にコンパイルしておく 自分で、記述した処理ではないですよね。 言い方はちょっと変かもしれないですが、 自分のソースコードをコンパイルする前に お約束として記述したようなことをコンパイルする という、感じですかね。 ...続きを読む
#付く処理のことですね。

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

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

お礼率 79% (76/96)

回答ありがとうございます。
皆さん本当に回答早いですね・・・。
とっても嬉しかったです。
また何かありましたらよろしくお願いします。
投稿日時 - 2001-05-29 21:20:15
  • 回答No.3
レベル11

ベストアンサー率 61% (157/255)

プリコンパイラは、プリプロセッサと同意です。 元来、例えば、C/C++コンパイラは、入力されたソースコード中に、 #define や #pragma などの記述があると、解析することが出来ません。 このような、元来コンパイラが解析することが出来ない「拡張された文法」 をコンパイラが理解できる「通常仕様のプログラムソースコード」に 変換する作業を行うのがプリコンパイラ(あるいはプリプロセッサ) ...続きを読む
プリコンパイラは、プリプロセッサと同意です。
元来、例えば、C/C++コンパイラは、入力されたソースコード中に、
#define や #pragma などの記述があると、解析することが出来ません。

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

お礼率 79% (76/96)

回答ありがとうございます。
コンパイラが解析することが出来ない「拡張された文法」を理解できるように変換することだったんですね。
とても分かりやすかったです!
ありがとうございました。
投稿日時 - 2001-05-29 21:22:45
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ