[英]Meaning of NULL definition for a macro in C
我正在編寫一個簡單的代碼,用於通過 procfs 中的條目訪問我的驅動程序數據。 在瀏覽頭文件proc_fs.h
,我遇到了一個宏,如:
#define proc_create(name, mode, parent, proc_fops) ({NULL;})
這個宏如何運作,因為它的擴展是NULL
?
({...})
是一個名為statement expression的 gcc 擴展。 這是一個可以使用表達式的語句。 語句表達式中使用的最后一個語句是表達式的值。
以下返回真:
return ({NULL;}) == NULL;
這個宏如何運作,
帶有任何 4 個參數的宏proc_create
擴展為({NULL;})
。
因為它的擴展是 NULL ?
擴展不是NULL
,而是字符({NULL;})
。 這個宏的擴展是一個計算結果等於NULL
的表達式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.