6

我每天都使用 ROOT C++ 库 (root.cern.ch),并且在浏览源代码时遇到了这个函数声明:

TString TString::Format(const char *va_(fmt), ...)
{
    //etc.

可以在这里找到。

我不明白 a 如何const char *在其名称中包含参数或括号。该表达式va_(fmt)稍后被用作简单表达式,const char *即使它看起来像函数调用或构造函数。起初我认为它与变量参数列表有关,这对我来说也是新的,但是阅读 stdarg.h 上的文档对这个问题根本没有帮助。

谷歌很难寻求帮助,因为我真的不知道该怎么称呼它。带有参数的声明?这不会产生任何好的结果。

我曾经以为我知道 C++,但这是怎么回事?所有帮助将不胜感激。

4

1 回答 1

11

这是一个宏 - 在Varargs.h

#if ...
#  define va_(arg) __builtin_va_alist
#else
#  define va_(arg) arg
#endif
于 2012-03-20T14:33:31.297 回答