私はいくつかのデータをいくつかのファイルに書き込むログサービスを作成しています(ファイル名はログとしましょう)。特定の引数がCの型[変数引数]であることを知らずにアクセスするにはどうすればよいですか?
書きたいデータの種類は、int型や文字列型などさまざまです。
void write_log(FILE * fp, char * event, ...)
{
va_list list;
va_start(list, event);
// Cannot use va_arg(list, type_of_var) here!!!
}
私は関数が私のデータに応じて異なる場合があります呼び出す方法:私が持っている
write_log(fp, "Memory size :", mem_size);
それとも
write_log(fp, "Username :", username);
は、これまでのところ、これは私の機能がどのように見えるかです3番目の引数が文字列かintか他のものかどうかは考えられません。
私はva_arg(list, type_of_var)
を使用していた可能性がありますが、私のデータのタイプは任意に変化しますので使用できません。
関数の第3引数にどのようにアクセスすることができますか?
できません。なぜprintfのような関数が書式文字列を必要とすると思いますか? – DeiDei
私の機能のアイデアや回避策は? –
回避策:必要なフィールドで 'struct'を定義し、それをファイルに書き込む関数に渡します。この関数は、構造体から関連するデータを読み込んでログに書き出します。 – ThunderWiring