|||
这个宏定义如下(摘自TI Z-Stack1.4.3中hal_defs.h文件):
#define st(x) do { x } while (__LINE__ == -1)
这个宏定义被其它的宏定义用来构建一个完全有效的C声明。如果没有这个宏定义,那么在if/else
条件语句中可能得不到预期的结果。
例如,以下的应用
#define SET_REGS() st( ioreg1 = 0; ioreg2 = 0; )
代替
#define SET_REGS() { ioreg1 = 0; ioreg2 = 0; }
或
#define SET_REGS() ioreg1 = 0; ioreg2 = 0;
最后这个宏定义在if/else条件句中将不能得到预期的结果。
倒数第二个宏将导致编译器错误在某些使用if/else结构时。
#define st(x) do { x } while (__LINE__ == -1)语句分析
__LINE__是C/C++的内部宏定义,得到当前代码的行号.
do
{x}while(__LINE__==-1)
因行号肯定是大于-1的,所以这个循环只执行一次。
加速度 Oct.27.2010