代码之家  ›  专栏  ›  技术社区  ›  FireAphis david.pfx

char(&test(…)[2]的意思是什么?

c++
  •  5
  • FireAphis david.pfx  · 技术社区  · 14 年前

    以下声明的含义是什么?

    char (& test(...))[2];
    

    我把它按原样粘贴在一个函数体中,它编译得很好。我不知道我能用它做什么,但它通过了编译。

    我也遇到过类似的事情 this 回答。

    2 回复  |  直到 14 年前
        1
  •  3
  •   CB Bailey    14 年前

    它是一个函数的声明,它接受一个变量参数列表,并返回对2数组的引用 char .

    请注意,如果定义这样的函数,则参数不可访问(通过标准方法),因为 <cstdarg> 宏需要变量参数列表才能跟随命名参数。

    如果愿意,可以使用此声明定义函数并返回对适当数组的引用。您可以使用任何参数调用它,但要受以下限制: ... 参数,包括传递非pod类类型导致未定义行为的限制。

    例如。

    namespace
    {
        char samplearray[2];
    }
    
    char (& test(...))[2]
    {
        return samplearray;
    }
    
        2
  •  1
  •   Motti    14 年前

    申报 测试 作为vararg函数返回对2数组的引用 char S

    一个有用的网站来消除这种声明是 cdecl: C gibberish <-> English (虽然它不理解VARARGS,是面向C而不是C++)。