自动展开宏
在程序设计语言中,宏是一种将一段代码替换为另一段代码的预处理指令。Auto expanding macros是指编译器在编译时自动展开宏,将宏在代码中的使用处替换为其定义内容,以便生成更高效的机器代码。
示例代码:
#define MAX(a,b) ((a) > (b) ? (a) : (b)) int main() { int x = 5; int y = 10; int z = MAX(x++, y++); printf("%d %d %d", x, y, z); return 0; }
在展开宏时,编译器将代码中的MAX(x++, y++)替换为((x++) > (y++) ? (x++) : (y++)),因此z的值为11而非期望的10。为了避免这类问题,应当避免在宏中出现副作用,并在展开宏时使用括号将其包围起来,从而避免不必要的错误。
上一篇:AutoExpandingDivs(自动展开的div)
下一篇:AutoFac - 当组件以单例(Singleton)的形式解析为依赖项时,InstancePerLifetimeScope变为SingleInstance。