什么是"__maybe_unused"?

Iva*_*van 15 c linux-kernel

在查看Linux内核时,我注意到了这一行:

static void *malloc(size_t size) __maybe_unused;
Run Code Online (Sandbox Code Playgroud)

在Linux v3.2 /arch/frv/kernel/gdb_stub.c中.我以前从未见过__maybe_unused用过.它是否特定于Linux内核?或者它是在C规范中定义的?它到底是做什么用的?

oua*_*uah 18

在宏include/linux/compiler-gcc.h的定义__maybe_unused:

#define __maybe_unused  __attribute__((unused))
Run Code Online (Sandbox Code Playgroud)

gcc手册中,您有unused函数属性的文档:

unused"此属性附加到函数,意味着该函数可能未使用.GCC不会对此函数发出警告."

http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html

和变量:

unused"此属性附加到变量,意味着该变量可能未使用.GCC不会对此变量产生警告."

http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html


Dav*_*eri 9

引入属性提交中:

__maybe_unused被定义为函数和变量使用的__attribute __((unused)),如果由于预处理器宏的评估而可能未被引用的话.如果函数的实际定义依赖于预处理器宏,则函数原型应使用__maybe_unused标记.