Eim*_*tas 9 c variadic-functions sentinel
关于gnu的C的文档说明如果函数有,__attribute__((sentinel))它必须NULL作为函数的最后一个参数.
是否可以将任何其他值作为结束参数列表的标记?
这是Apple定义方便的预编译检查的(编辑版本)NS_REQUIRES_NIL_TERMINATION,即通过某种方法需要一个nil哨兵......
+ (NSArray*)arrayWithRects:(NSR)rect,...NS_REQUIRES_NIL_TERMINATION;
#if !defined(NS_REQUIRES_NIL_TERMINATION)
#if defined(__APPLE_CC__) && (__APPLE_CC__ >= 5549)
#define NS_REQUIRES_NIL_TERMINATION __attribute__((sentinel(0,1)))
#else
#define NS_REQUIRES_NIL_TERMINATION __attribute__((sentinel))
#endif
#endif
Run Code Online (Sandbox Code Playgroud)
不太确定这两个编译器指令之间有什么区别..但我认为这个构造可以与“其他”、“自定义”哨兵一起使用..我在想NSNotFound-XX_REQUIRES_NSNOTFOUND_TERMINATION或者类似的东西?