Что такое "__maybe_unused"? - программирование
Подтвердить что ты не робот

Что такое "__maybe_unused"?

При взгляде на ядро ​​Linux я заметил строку:

static void *malloc(size_t size) __maybe_unused;

в Linux v3.2/arch/frv/kernel/gdb_stub.c. Я никогда раньше не видел __maybe_unused. Является ли это специфическим для ядра Linux? Или это определено в спецификации C? И что именно он делает?

4b9b3361

Ответ 1

В include/linux/compiler-gcc.h есть определение макроса __maybe_unused:

#define __maybe_unused  __attribute__((unused))

и в gcc у вас есть документация атрибута unused для функций:

unused "Этот атрибут, прикрепленный к функции, означает, что функция должна быть, возможно, не использована. GCC не будет вызывать предупреждение для этой функции."

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

и для переменных:

unused "Этот атрибут, привязанный к переменной, означает, что переменная должна быть, возможно, не использована. GCC не выдаст предупреждение для этой переменной."

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

Ответ 2

Из commit, который ввел атрибут:

__ maybe_unused определяется как __attribute __ ((не используется)) для обеих функций и переменным использованием, если его можно было бы отменить из-за оценка макросов препроцессора. Прототипы функций должны быть отмечены с __maybe_unused, если фактическое определение функции зависит на макросах препроцессора.