C言語なら俺に聞け(入門篇) Part 5
■ このスレッドは過去ログ倉庫に格納されています
0078ぴゅあ
2006/12/03(日) 05:22:42他のものに例えてみるのは考えるのが面倒なのでそのまま書きますけど
>>72が示したページにあるように「機械語に変換される前に」というより
大抵のコンパイラにはコンパイルの段階の前にプリプロセッサによる処理というものがあって
(概ね:プリプロセッサ→コンパイラ→アセンブラ→リンカ)
そのひとつのマクロ処理はソースコードから文字列(トークン)の置き換えを行うもの
(飽くまで文字列(トークン)を文字列のまま扱って置き換えする)
そうそう、エディタで言えば置換機能
その結果として出てきたソースコードがコンパイラに掛けられます
例えば(いい例書けるか自信ないけど)
#define ARRAY_SIZE (5*10)
int array[ARRAY_SIZE];
と書いておくと
int array[(5*10)];
と書いてあったものとしてコンパイラに掛けられる(これのことを"通す"と言っているのかな?)ことになります
>>72
#include,#define等はプリプロセッサディレクティブ
Cで言うところのマクロ処理については#defineディレクティブになるのでは?
これらのディレクティブ(擬似命令)を使って書いたものがマクロであるとかはまず言わないような気も…?
■ このスレッドは過去ログ倉庫に格納されています