我在libuv的heap_inl.h中遇见了这样的代码:
#if defined(__GNUC__) # define HEAP_EXPORT(declaration) __attribute__((unused)) static declaration #else # define HEAP_EXPORT(declaration) static declaration #endif
这是我第一次遇见这个__attribute__((unused)) ,记录一下。
在C程序中,如果定义了一个静态函数,而没有去使用,编译时会有一个警告:
#include <stdio.h>
int main(void)
{
printf("main\n");
}
static void a(void)
{
printf("a\n");
}
$ gcc a.c -Wall
a.c:8:13: warning: 'a' defined but not used [-Wunused-function]
static void a(void)
^
而使用attribute((unused))可以告诉编译器忽略此告警:
#include <stdio.h>
int main(void)
{
printf("main\n");
}
__attribute__((unused)) static void a(void)
{
printf("a\n");
}
$ gcc a.c -Wall