2009-05-28 2 views
1

私は最近、明らかに動作状態にある小さなMCF C++アプリケーションを採用しました。まず、コード上でPC-Lintを実行していて、lintはCStringTがFormatに渡されていると不平を言っています。インターネット上の意見は分かれているようだ。 CStingはエラーなしでこのユースケースを処理するように設計されていると言われていますが、その他のもの(MSDN article)は可変引数関数に渡されたときに常にキャストする必要があると言っています)Format/printf(とvarargs一般)に渡されるCStringをキャストする必要がありますか?

答えて

3

CString可変引数リストの一部として渡されるように注意深く設計されているので、それをそのように使用することは安全です。そして、Microsoftがこの特定の動作を壊さないように注意します。あなたが望むなら、それをそのまま使用しても安全です。

私はキャストを個人的に好きです。ストリングクラスがそのように振る舞うのは一般的な動作ではありません(例:std :: string does not)。精神的に一貫して、それを「安全な」方法で行うほうが良いかもしれません。

P.S .:実装の詳細およびキャスト方法の詳細については、threadを参照してください。

関連する問題