19

Linuxカーネルを見ていると、次の行に気づきました。

static void *malloc(size_t size) __maybe_unused;

Linuxv3.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 に答える