在查看 Linux 内核时,我注意到以下行:
static void *malloc(size_t size) __maybe_unused;
在 Linux v3.2 /arch/frv/kernel/gdb_stub.c 中。我以前没见过__maybe_unused
用过的。它是特定于 Linux 内核的吗?还是在 C 规范中定义?它到底是做什么的?
在查看 Linux 内核时,我注意到以下行:
static void *malloc(size_t size) __maybe_unused;
在 Linux v3.2 /arch/frv/kernel/gdb_stub.c 中。我以前没见过__maybe_unused
用过的。它是特定于 Linux 内核的吗?还是在 C 规范中定义?它到底是做什么的?
里面有宏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 不会对此变量产生警告。”
__maybe_unused 被定义为 __attribute__((unused)) 用于函数和变量使用,如果它可能由于预处理器宏的评估而未被引用。如果函数的实际定义依赖于预处理器宏,则函数原型应标记为 __maybe_unused。