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

时间:2010-09-02 06:53:58

标签: c++

以下声明的含义是什么:

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

我把它粘贴在一个函数体中,然后编译好了。我不知道我能用它做什么,但它通过了汇编。

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

2 个答案:

答案 0 :(得分:3)

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

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

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

E.g。

namespace
{
    char samplearray[2];
}

char (& test(...))[2]
{
    return samplearray;
}

答案 1 :(得分:1)

  

测试声明为vararg函数,返回对2 char s

数组的引用

用于解除此类声明的有用站点是cdecl: C gibberish <-> English(虽然它不理解varargs并且是面向C而不是C ++)。