Keil 版本信息:
我经常在一些 C 8051 的程序中看到这样的代码块:
do {
...
} while(0);
我在想,像 do { ... } while(0);
这样的代码块,Keil C51 编译器是如何处理的呢?
于是,我创建了一个项目:
在 main.c 文件中这样写:
void main() {
unsigned char i = 0;
while (1) {
do {
i = 1;
} while(0);
}
}
该项目的 C51 编译器的配置如下:
编译,然后进入调试模式:
从 Disassembly 的结果来看,如果不考虑 do { ... } while(0);
块中的语句,那么,其本身并不产生冗余的代码,相当于 { ... }
。