循环中的宏?

时间:2010-10-07 12:15:00

标签: loops macros preprocessor

for(x;x<crap;x++)
{
    macro(x,y);
}

预处理器如何处理?这个循环是展开还是其他什么?

2 个答案:

答案 0 :(得分:5)

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

#define macro(x, y) doSomething(x, y)
for(x;x<crap;x++){
    macro(x,y);
}

将扩展为:

for(x;x<crap;x++){
    doSomething(x,y);
}

围绕macro(x,y)的上下文对预处理器如何扩展它没有影响。

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

答案 1 :(得分:1)

在编译操作发生之前,可以将

#define宏视为搜索和替换。这意味着您的宏等同于将在代码中的引用中直接替换。不,循环没有展开。