C マクロ プリプロセッサ (C99) を実装しています...
次の行動にビックリ…。
例1:
#define PASTE(x) X_##x #define EXPAND(x) PASTE(x) #TABSIZE 1024 を定義 #define BUFSIZE TABSIZE 貼り付け(BUFSIZE) EXPAND(BUFSIZE)
次のように展開します。
X_BUFFSIZE X_1024
例2:
#define EXPAND(s) TO_STRING(s) #define TO_STRING(s) #s #FOUR 4 を定義する TO_STRING(4) エキスパンド(4)
次のように展開します。
"四" 「4」
私はCの「無料」標準を調べましたが、次のものが見つかりませんでした...
- 実際、プリプロセッサが実行するパスの数は?
- 最初に 1 つのマクロを置き換えてから、別のマクロを置き換えるか、など
#define
それとも、 s が 1 つずつ発生するときにそれらを保存して置換しますか?- ファイルのインクルードが最初に行われるか、マクロ展開のどちらで行われますか?