请问下,为啥Sequence::create()参数最后要以nullprt结尾?

Sequence* Sequence::createWithVariableList(FiniteTimeAction *action1, va_list args)
{
FiniteTimeAction *now;
FiniteTimeAction *prev = action1;
bool bOneAction = true;

while (action1)
{
    now = va_arg(args, FiniteTimeAction*);
    if (now)
    {
        prev = createWithTwoActions(prev, now);
        bOneAction = false;
    }
    else
    {
        // If only one action is added to Sequence, make up a Sequence by adding a simplest finite time action.
        if (bOneAction)
        {
            prev = createWithTwoActions(prev, ExtraAction::create());
        }
        break;
    }
}

return ((Sequence*)prev);

}

里面逻辑处理难道不能改吗,一定让我们补nullptr?还是工程师在设计的时候,借鉴其他系统APi风格,所以才像这样写的?

因为无法计算va_list的长度.

1赞

若要最大限度利用c/c++的效率优势,调用者在最后加nullptr是唯一的方式

1赞

一个指针数组不想传长度就在最后放一个null