Linuxカーネルを見ていると、次の行に気づきました。
static void *malloc(size_t size) __maybe_unused;
Linuxv3.2の場合/arch/frv/kernel/gdb_stub.c。私はこれまで__maybe_unused
使用されたのを見たことがありません。Linuxカーネルに固有ですか?それともC仕様で定義されていますか?そして、それは正確に何をしますか?
Linuxカーネルを見ていると、次の行に気づきました。
static void *malloc(size_t size) __maybe_unused;
Linuxv3.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 でマークされます。