请帮助我理解这个带有参数的C++参数声明

Please help me understand this C++ parameter declaration with an argument

本文关键字:参数 C++ 声明 帮助      更新时间:2023-10-16

我每天都使用ROOT C++库(ROOT.cern.ch),当我浏览源代码时,我发现了这个函数声明:

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

它可以在这里找到。

我不明白const char *的名称中怎么会有一个参数或括号。表达式va_(fmt)后来被用作简单的const char *,尽管它看起来像函数调用或构造函数。起初,我认为这与变量参数列表有关,这对我来说也是新的,但阅读stdarg.h上的文档对解决这个问题毫无帮助。

很难在谷歌上寻求帮助,因为我真的不知道该怎么称呼它。带论据的宣言?这不会带来任何好的结果。

我以前以为我知道C++,但这里发生了什么?我们将不胜感激。

这是Varargs.h:中的一个宏

#if ...
#  define va_(arg) __builtin_va_alist
#else
#  define va_(arg) arg
#endif