我正在实现一个 C 宏预处理器(C99)......
我对以下行为感到惊讶....
例1:
#define PASTE(x) X_##x #define 扩展(x)粘贴(x) #define TABSIZE 1024 #define BUFSIZE TABSIZE 粘贴(BUFSIZE) 扩展(BUFSIZE)
扩展为:
X_BUFFSIZE X_1024
例 2:
#define EXPAND(s) TO_STRING(s) #define TO_STRING(s) #s #定义四个 4 TO_STRING(四) 展开(四)
扩展为:
“四” “4”
我已经通过了 C 的“免费”标准,但我找不到以下内容......
- 实际上预处理器执行了多少遍?
- 它是否先替换一个宏然后再替换另一个等等
- 或者它是否存储并替换它们,因为它们
#define
是一一遇到的? - 是先包含文件还是先进行宏扩展?