3

Phobos のコードを Tango に相当するものに変換しようとしていますが、完全には理解できない次のコードに行き詰まっています。

OutBuffer codebuf;

(...)

void gen(Loc loc, uint opcode, uint argc, ...)
{
    codebuf.reserve((1 + argc) * uint.sizeof);
    codebuf.write(combine(loc, opcode));
    for (uint i = 1; i <= argc; i++)
    {
        codebuf.write(va_arg!(uint)(_argptr));
    }
}

エラーを引き起こすのは特に va_arg です。

dmdscript_tango\irstate.d(215): Error: undefined identifier va_arg
dmdscript_tango\irstate.d(215): Error: function expected before (), not va_arg of type int

この問題を回避する方法についての洞察を共有できる人はいますか? :-)

4

2 に答える 2

3

http://d-programming-language.org/phobos/core_vararg.htmlをチェックしてください

void gen(Loc loc, uint opcode, uint argc,...)
{
    codebuf.reserve((1 + argc) * uint.sizeof);
    codebuf.write(combine(loc, opcode));

    va_list v_arg;
    va_start(v_arg,argc);
    scope(exit)va_end(v_arg); 

    for (uint i = 1; i <= argc; i++)
    {
        codebuf.write(va_arg!(uint)(v_arg));
    }
}
于 2011-06-28T22:57:08.130 に答える
3

まったく交換する必要はありません。tango.core.Vararg をインポートするだけです。

または、それが機能しない場合は、tango.stdc.stdarg を試してください。

http://dsource.org/projects/tango/docs/current/tango.stdc.stdarg.htmlにある関連ドキュメントも参照してください。

于 2011-06-29T22:40:06.020 に答える