MrM*_*ter 4 c macros c-preprocessor
我很难理解 C 预处理器在以下上下文中如何应用重写规则。我有以下宏:
\n\n#define _A(x) "A" _##x\n#define _B(x) "B" _##x\n#define X(x) _##x\nRun Code Online (Sandbox Code Playgroud)\n\n这个想法是,每个宏都使用串联来创建一个新表达式,它本身可以是一个宏 \xe2\x80\x94 如果它是一个宏,我希望它被扩展:
\n\n现在,以下内容正如我所期望的那样展开:
\n\nX(x) expands to _x\nX(A(x)) expands to "A" _x\nX(A(B(x))) expands to "A" "B" _x\nRun Code Online (Sandbox Code Playgroud)\n\n然而,一旦多次使用同一个宏,扩展就会停止:
\n\nX(A(A(x))) expands to "A" _A(x), expected "A" "A" _x\nX(B(B(x))) expands to "B" _B(x), expected "B" "B" _x\nX(A(B(A(x)))) expands to "A" "B" _A(x), expected "A" "B" "A" _x \nX(A(B(A(B(x))))) expands to "A" "B" _A(B(x)), expected "A" "B" "A" "B" _x \nRun Code Online (Sandbox Code Playgroud)\n\n我猜想这里存在某种“只能扩展同名宏一次”规则?我可以做些什么来让宏按照我想要的方式扩展吗?
\n