Xcode 最近添加了__nonnull
, __nullable
等属性。但是,旧版本的 clang 和其他编译器不支持它们。
如何以兼容的方式使用这些属性?
我希望这样的事情会起作用:
#ifndef NS_ASSUME_NONNULL_BEGIN
#define __nonnull
#endif
但似乎NS_ASSUME_NONNULL_BEGIN
不是一个真正的宏,并且它在 Xcode7 中“未定义”。
这样做是有意义的:
#if !defined(__is_identifier) || __is_identifier(__nonnull)
#define __nonnull
#define __nullable
#endif
但 Xcode 6 因“令牌不是预处理器子表达式中的有效二元运算符”错误而窒息。
正如问题中所解释的,所有好的方法似乎都不起作用。最直白的做法是:
#if !defined(__clang_major__) || __clang_major__ < 7
#define __nonnull
#define __nullable
#endif
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)