1、作為一種防止巨集錯誤展開的一種防禦性寫法。
相信很多人都知道,這裡不展開了。
2、實現 goto 語句的功能,一次break就可以跳出到後續語句。
do while(0)
// 後續語句
例如:
//
static char* readfiletobuf()
; do
fd = fopen(init_configuration_file, "r");
if (fd == null)
buffer = (char*)malloc(filestat.st_size + 1);
if (buffer == null)
if (fread(buffer, filestat.st_size, 1, fd) != 1)
buffer[filestat.st_size] = '\0';
} while (0);
if (fd != null)
return buffer;
}
do while 0 巨集的作用的定義
看到開放源 巨集定義經常這樣用 define some do while 0 為什麼這樣用?能夠試一下。假如乙個普通巨集定義 define some x fun1 x fun2 x if condition some x 變為 if condition fun1 x fun2 x 這樣直接加個花括號...
深度理解do while 0 語句的作用
在linux核心中常常會看到do while 0 這樣的語句,有人疑惑,認為無意義,因為他只執行一次,加不加do while 0 小過失完全一樣的,那你就錯了,沒有完全了解do while 0 下面看乙個例子 定義乙個巨集 define safe free p do while 0 假設這裡去掉do...
關於巨集中使用do while 0 的作用
關於do while 0 大家肯定不會陌生,就是do 裡面的迴圈體執行一次,且僅執行一次。那這樣和普通的語句有什麼區別呢?在巨集中,這樣做是為了保證巨集的正確執行 行為一致 就跟if n 0 大家會寫成if 0 n 一樣。一下是乙個例子,便於理解。include stdio.h define div...