スポンサーサイト

公開日 : --/--/-- (--)
カテゴリ : スポンサー広告
<< ブログトップ >>

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Keisuke's Backup 開発状況 (2010/03/10)

公開日 : 2010/03/10 (水)
コメント : 0 件 | カテゴリ : Keisuke's Backup
<< ブログトップ >>

va_list 系関数は要領さえわかれば簡単に扱えます。

バックアップ レポート機能の搭載に向けて悪戦苦闘を繰り広げている Keisuke's Backup の開発ですが、本日復元機能については対応が完了しました。

開発中に気付いたのですが、va_list 型変数は printf 系関数では使えないことが発覚し、何で?と悩み続けてしまいました。あくまでログ出力が目的ですので、どうしても fprintf 系関数が使えないと困るわけですが、後になって va_list 型変数を引数とする vprintf 系関数があることに気が付きました。

printf 系や fprintf 系関数は可変引数で値を必要な数だけ渡すのに対して、vprintf 系関数は va_list 型変数で一度に値を渡すことができる点で違いがありました。先述のとおり、今回実装するのはログ出力用途ですので、今回は vfprintf() 関数を利用することになります。(Unicode ビルドなので実際は vfwprintf() 関数)

要領をおさらいすると、

1. va_list 型変数を 1 つ用意する
2. ベースとなる文字列型変数を用意する
 (仮引数でも構いません。)
3. va_start マクロで変数を初期化
4. vprintf 系関数で処理
5. va_end マクロを実行して変数を解放

となります。独自に書式フィールド対応関数を用意する場合にはかなり重宝します。独自関数に printf 系関数の機能を持たせたい場合は覚えておくと便利です。

ちなみに、バックアップ側はまだ実装していません。これについてはあす以降に付けていく予定です。

コメント一覧

コメントする















管理人のみ確認可能にする

| ブログトップ |

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。