2012-10-17 1 views
14

Guardando il kernel di Linux, ho notato la linea:Che cos'è "__maybe_unused"?

static void *malloc(size_t size) __maybe_unused; 

in Linux v3.2 /arch/frv/kernel/gdb_stub.c. Non ho mai visto prima il __maybe_unused. È specifico del kernel di Linux? O è definito nella specifica C? E cosa fa esattamente?

risposta

17

In include/linux/compiler-gcc.h v'è la definizione del __maybe_unused macro:

#define __maybe_unused __attribute__((unused)) 

e in gcc manuale avere la documentazione dell'attributo unused per le funzioni:

inutilizzato "Questo attributo, collegato a una funzione, significa che la funzione è destinata a essere eventualmente inutilizzata. GCC non produrrà un avviso per questa funzione. "

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

e per le variabili:

inutilizzato "Questo attributo, attaccato ad una variabile, significa che la variabile è destinata ad essere eventualmente inutilizzata GCC non produrrà un avvertimento per questo. variabile."

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

9

Dal commit that introduced the attribute:

__maybe_unused è definito come __attribute __ ((inutilizzato)) sia funzione e uso variabile se potrebbe essere referenziata dovuto alla valutazione delle macro preprocessore. I prototipi di funzioni devono essere contrassegnati con con __maybe_unused se la definizione effettiva della funzione dipende dallo sulle macro del preprocessore.

+0

Grazie per il link per il commit. – Ivan