请帮我理解带参数的C++参数声明

Sim*_*mon 6 c++ syntax arguments function-declaration

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

TString TString::Format(const char *va_(fmt), ...)
{
    //etc.
Run Code Online (Sandbox Code Playgroud)

它可以在这里找到.

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

谷歌寻求帮助非常困难,因为我不确定该怎么称呼它.带参数的声明?这没有给出任何好结果.

我曾经认为我认识C++,但这里发生了什么?所有帮助将不胜感激.

Joe*_*oeG 11

这是一个宏观 - 在Varargs.h:

#if ...
#  define va_(arg) __builtin_va_alist
#else
#  define va_(arg) arg
#endif
Run Code Online (Sandbox Code Playgroud)

  • 我们告诉C程序员"#define"只是混淆,但他们相信我们吗?*不......*^ _- (7认同)