事前定義された関数形式マクロ
__has_attribute(attr)
attr がサポートされている属性の場合、1 として評価されます。そうでなければ 0 として評価されます。使用例:
#ifndef __has_attribute // if we don't have __has_attribute, ignore it
#define __has_attribute(x) 0
#endif
#if __has_attribute(deprecated)
#define DEPRECATED __attribute__((deprecated))
#else
#define DEPRECATED // attribute "deprecated" not available
#endif
void DEPRECATED old_func(int); // use the attribute if available