循环中的宏?

bak*_*kra 0 macros preprocessor loops

for(x;x<crap;x++)
{
    macro(x,y);
}
Run Code Online (Sandbox Code Playgroud)

预处理器如何处理?这个循环是展开还是别的?

Ric*_*dle 5

在编译代码之前扩展宏 - 无论是在循环中还是在其他任何地方都无关紧要.

#define macro(x, y) doSomething(x, y)
for(x;x<crap;x++){
    macro(x,y);
}
Run Code Online (Sandbox Code Playgroud)

将扩展到:

for(x;x<crap;x++){
    doSomething(x,y);
}
Run Code Online (Sandbox Code Playgroud)

周围环境macro(x,y)对预处理器如何扩展它没有影响.

(预处理器甚至不知道你正在使用什么编程语言 - 它可能是C,Python,Brainfuck或给你的银行经理的一封信,它会以同样的方式扩展宏.)