我有一个嵌入式C源代码。在它的定义中,它有很多#define行,如下所示:
#define XNV_SPI_TX(x) st(U1CSR &= 0xFD; U1DBUF = (x);)
任何想法是什么 st() 意味着什么? 我使用IAR作为编译器和工具链。
答案 0 :(得分:3)
感谢评论,这是我发现的:
/* (The while condition below evaluates false without generating a
* constant-controlling-loop type of warning on most compilers.)
*/
#define st(x) do { x } while (__LINE__ == -1)
答案 1 :(得分:1)
此构造用于防止if / else条件显示意外行为。 例如,如果您有类似
的内容#define assign() a=1;b=0;
在if / else语句中它的行为不会如预期的那样。