do while0的兩個作用

2022-02-18 07:16:22 字數 569 閱讀 4478

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...