首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DMD Phobos到探戈的转换: va_arg -它是什么?我该用什么来代替它呢?

DMD Phobos到探戈的转换: va_arg -它是什么?我该用什么来代替它呢?
EN

Stack Overflow用户
提问于 2011-06-29 06:40:04
回答 2查看 161关注 0票数 3

我正在尝试将一些Phobos代码转换为与其对应的Tango代码,但我被这段代码卡住了,我不能完全理解它:

代码语言:javascript
复制
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导致了这个错误:

代码语言:javascript
复制
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

有谁能分享一些关于如何解决这个问题的见解?:-)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-30 06:40:06

你根本不需要更换它。只需导入tango.core.Vararg即可;

或者,如果这不起作用,可以试试tango.stdc.stdarg;

另请参阅http://dsource.org/projects/tango/docs/current/tango.stdc.stdarg.html上的相应文档

票数 3
EN

Stack Overflow用户

发布于 2011-06-29 06:57:08

查看http://d-programming-language.org/phobos/core_vararg.html

代码语言:javascript
复制
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));
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6513925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档