6

私は毎日ROOTC++ライブラリ(root.cern.ch)を使用しており、この関数宣言に出くわしたときにソースを参照していました。

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

ここで見つけることができます。

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 に答える