AX宏Macros运算
先给个例子
static void MacrosCalc(Args _args) { #define.test(10) #defdec.test int i; ; print info(strfmt("%1",#test)); #defdec.test print info(strfmt("%1",#test)); #defdec.test print info(strfmt("%1",#test)); for(i=1;i<=3;i++) { #defdec.test print info(strfmt("%1",#test)); } }
按照平常的变量计算逻辑,输出结果应该是
10,9,8,7,6,5
但实际的输出结果是
9,8,7,6,6,6
这个就有点想不通了,第一句Print之前没有执行defdec,却自减了,而for循环执行了三次defdec,却只减了一次?
这就是变量和常量的区别了
我们常用的是变量,导致用变量的思维来处理常量
正确的常量Macros计算并不是在运行时计算的
很简单的测试,跟踪一下这个脚本就会发现,defdec根本就跟踪不到,也就是没有运行
系统对Macros的计算处理是在编译的时候就生成了
也就是说系统在编译时,见到defdec,就是对#test进行了自减,生成新的常量