19

在查看 Linux 内核时,我注意到以下行:

static void *malloc(size_t size) __maybe_unused;

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

4

2 回答 2

24

里面有宏include/linux/compiler-gcc.h的定义:__maybe_unused

#define __maybe_unused  __attribute__((unused))

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

未使用的“附加到函数的此属性意味着该函数可能未被使用。GCC 不会为此函数产生警告。”

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

对于变量:

未使用“附加到变量的此属性意味着该变量可能未使用。GCC 不会对此变量产生警告。”

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

于 2012-10-17T20:36:04.913 回答
9

引入该属性的提交中:

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

于 2012-10-17T20:35:14.323 回答