RoboCup Junior Japan Rescue Kanto OB
2005~2013
2005~2013
今日の記事はプリプロセッサについてです。
プリプロセッサってなんでしょう、という話から始まるのですが、
別に難しいものではありません。
というより、C言語を齧ったことがあって、この単語を知らない人は、
十中八九名前を知らずに使っている場合が殆どでしょう。
Cの場合(でなくとも)、使わないとほとんど何もできないに等しいですからね。
ところで、これは何かというと
・・・。
コンパイラです。
というより今のコンパイラに付属されている機能といった方が正しいでしょう。
じゃあこのプリプロセッサはどういう機能なのかと言いますと、「ある処理を実行する機能」という答えになります。
では、それはどういう処理かと言いますと、
例えば、
#include
例えば、
#define
このあたりがC言語だと一番有名でしょうね。(というより主なものを挙げるとこれしかないような・・・)
まぁあとは#ifとか#ifdefとかその類のものがあったり・・・します。
どちらも単体で意味は知っていたりするものでしょうね。
#includeは日本語にすると、「含む」とか「組み込む」という意味になります。
これは要するに別のファイルで定義した関数や定数等をプログラムで使いたいときに使用するものですね。
例えばプログラム内に、#include"stdio.h"
と書くと、stdio.hのファイル内に定義された関数等をそのプログラムで使用することができます。
この.hの拡張子のファイルはプログラムにおける、定義ファイルのようなもので、
ライブラリファイルとかヘッダファイルなどと呼ばれています。
ここにC言語の時と同じように関数や定数を定義することで、プログラムの方で#includeを記述すると
プログラム内でヘッダファイルで定義した関数等が使えるようになるというものです。
ただヘッダを作る際には場合によって、環境変数をいじらなくてはならないのでちょっとめんどくさいです。
ちなみに記述方法は2通りあって、
#include"ヘッダ名"
#include<ヘッダ名>
の2通りです。どちらでも意味は変わりません。
また、#defineは日本語にすると「定義」になります。これはそのままの意味、つまり定数を定義するのもので
#define X 10
などと書くことで数字を文字に置換することができるものです。
プログラム内にこれを記述することで、そのプログラム内ではXという文字は数字の10と同様の扱いになります。
例えば上の#defineと変数xが定義されたプログラムなら、
if(x==10)と、
if(x==X)は、同一のものとなります。
まぁこのような処理を行うものをプリプロセッサといいます。
これには大体最初に#が入っているのですぐにわかるようになっていると思います。
まぁなんでこれらが総称して、このように呼ばれているかと言いますと、
プリプロセッサに該当するものはすべて、プログラムをコンパイルした時に、
ソースそのものがコンパイルされる前に、「前処理」という形で処理されます。
まぁ要するに一番最初にコンパイルされる、という言い方が分かり易いでしょうか。(ちょっと違う気がするけど・・・)
この「前処理」を英訳すると、
前→pre
処理→process
前+処理=pre+process=preprocess
これを名詞にしてみると→preprocessor
∴ プリプロセッサという訳です。
また、このプリプロセッサを行う命令、
つまり#includeや#defineのことをディレクティブとか言ったりします。(この単語絶対使わないな・・・)
というわけで今日は前処理についてのお話でした。
このディレクティブについてですが、
基本的に関数の外、プログラムの一番上に宣言部としてまとめて宣言するのが通例ですね。
ちなみに僕の場合、このディレクティブ、宣言部だけで
副部長のプログラムの総量(約140行)を超えています(笑)
(^・ω・)ノ RadiumProduction in RoboCup Junior
プリプロセッサってなんでしょう、という話から始まるのですが、
別に難しいものではありません。
というより、C言語を齧ったことがあって、この単語を知らない人は、
十中八九名前を知らずに使っている場合が殆どでしょう。
Cの場合(でなくとも)、使わないとほとんど何もできないに等しいですからね。
ところで、これは何かというと
・・・。
コンパイラです。
というより今のコンパイラに付属されている機能といった方が正しいでしょう。
じゃあこのプリプロセッサはどういう機能なのかと言いますと、「ある処理を実行する機能」という答えになります。
では、それはどういう処理かと言いますと、
例えば、
#include
例えば、
#define
このあたりがC言語だと一番有名でしょうね。(というより主なものを挙げるとこれしかないような・・・)
まぁあとは#ifとか#ifdefとかその類のものがあったり・・・します。
どちらも単体で意味は知っていたりするものでしょうね。
#includeは日本語にすると、「含む」とか「組み込む」という意味になります。
これは要するに別のファイルで定義した関数や定数等をプログラムで使いたいときに使用するものですね。
例えばプログラム内に、#include"stdio.h"
と書くと、stdio.hのファイル内に定義された関数等をそのプログラムで使用することができます。
この.hの拡張子のファイルはプログラムにおける、定義ファイルのようなもので、
ライブラリファイルとかヘッダファイルなどと呼ばれています。
ここにC言語の時と同じように関数や定数を定義することで、プログラムの方で#includeを記述すると
プログラム内でヘッダファイルで定義した関数等が使えるようになるというものです。
ただヘッダを作る際には場合によって、環境変数をいじらなくてはならないのでちょっとめんどくさいです。
ちなみに記述方法は2通りあって、
#include"ヘッダ名"
#include<ヘッダ名>
の2通りです。どちらでも意味は変わりません。
また、#defineは日本語にすると「定義」になります。これはそのままの意味、つまり定数を定義するのもので
#define X 10
などと書くことで数字を文字に置換することができるものです。
プログラム内にこれを記述することで、そのプログラム内ではXという文字は数字の10と同様の扱いになります。
例えば上の#defineと変数xが定義されたプログラムなら、
if(x==10)と、
if(x==X)は、同一のものとなります。
まぁこのような処理を行うものをプリプロセッサといいます。
これには大体最初に#が入っているのですぐにわかるようになっていると思います。
まぁなんでこれらが総称して、このように呼ばれているかと言いますと、
プリプロセッサに該当するものはすべて、プログラムをコンパイルした時に、
ソースそのものがコンパイルされる前に、「前処理」という形で処理されます。
まぁ要するに一番最初にコンパイルされる、という言い方が分かり易いでしょうか。(ちょっと違う気がするけど・・・)
この「前処理」を英訳すると、
前→pre
処理→process
前+処理=pre+process=preprocess
これを名詞にしてみると→preprocessor
∴ プリプロセッサという訳です。
また、このプリプロセッサを行う命令、
つまり#includeや#defineのことをディレクティブとか言ったりします。(この単語絶対使わないな・・・)
というわけで今日は前処理についてのお話でした。
このディレクティブについてですが、
基本的に関数の外、プログラムの一番上に宣言部としてまとめて宣言するのが通例ですね。
ちなみに僕の場合、このディレクティブ、宣言部だけで
副部長のプログラムの総量(約140行)を超えています(笑)
(^・ω・)ノ RadiumProduction in RoboCup Junior
Comments
※コメントは内容確認後に手動で公開するようにしております。反映までしばらくお待ちください。
※コメントは内容確認後に手動で公開するようにしております。反映までしばらくお待ちください。
カレンダー
最新CM
カテゴリー
らじぷろ目次
らじぷろ検索機
最新記事
(01/01)
(01/03)
(08/27)
(04/29)
(01/01)
(11/20)
(09/06)
(09/04)
(08/09)
(08/06)
(07/27)
(05/29)
(03/15)
(01/01)
(05/07)
プロフィール
HN:
Luz
性別:
男性
アーカイブ