我有一个需要双 NULL 终止符的可变参数函数。
人为的简化示例
void makeLine(char *name, ...) {
... accepts (x,y) coordinates until (0,0) is found,
... assume that any coordinate except (0,0) is legal
[i.e. (0,1) or (1,0) should not trigger a stop condition]
}
我想用来自 gcc的__attribute ((sentinel))__对其进行注释。但似乎使用 sentinel 属性,只有一个参数可以要求为 NULL,而不是所需的sentinel(0,1) [最后两个要求为 NULL]。
有没有办法让 gcc 强制执行双 NULL,或者......
鉴于 NULL 只能对两个参数之一强制执行,你会用sentinel(0)或sentinel(1)装饰这个函数吗?为什么?这两个位置中的哪一个更容易捕获错误?