二重 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))__で注釈を付けたいと思います。しかし、センチネル属性を使用すると、目的のセンチネル(0,1) [最後の2つはNULLである必要がある]とは対照的に、引数の1つだけがNULLである必要があるようです。
gcc に double-NULL を適用するように依頼する方法はありますか、それとも...
NULL は 2 つのパラメーターの 1 つにのみ適用できることを考えると、この関数をsentinel(0)またはsentinel(1)で装飾しますか? またその理由は? 2 つのポジションのうち、バグをキャッチする可能性が高いのはどれですか?