1

私は va_arg リストに精通しています。コンマの後の値を取得する方法があるかどうか知りたかった

例えば

abc("%d %d %d how are you",1,2,3);

次のような処理を行わずに、この呼び出し全体を文字列に渡すことができるかどうかを知りたい

string [1]="%d %d %d how are you",1,2,3;

私はどんな種類の処理もしたくありません。呼び出し全体を読み込んで配列の文字列に保存したいだけです。

4

3 に答える 3

2

あなたの要件を理解できる限り、標準 C++03 では不可能です。最も密接に関連する C++ 機能は、プリプロセッサ マクロ引数の文字列化であり、次のようなことが可能になります。

#define ABC(X) do { remember_string_version(#X); abc X; } while (false)

ABC(("%d %d %d how are you",1,2,3));

二重括弧に注意してください。これらは文字列と数値をグループ化するため、ABC が期待する単一のパラメーター「X」に一致します。

プリプロセッサの文字列化は、ソース コードのスニペットを文字列として保持しながら、ソース コードとして使用できる唯一の機能です。

于 2012-04-09T07:20:18.623 に答える
0

これはコンパイラに依存し、理論的にはそれを行うことができますが、実際には移植性がない可能性があります。@Tonyが述べたように、コンパイル時にマクロを介してそれを行うことができますが、実行時には-を使用しva_argます。これは基本的に必要なものを実装し、このコンパイラ依存機能にインターフェイスするための標準によって提供されるツールです。

于 2012-04-09T07:21:47.860 に答える