我应该将一个CString传递给Format / printf(和一般的varargs)吗?

时间:2009-05-28 18:59:40

标签: visual-c++ printf variadic-functions cstring

我最近接受了一个小型的MCF C ++应用程序,它显然处于工作状态。为了开始,我在代码上运行PC-Lint,而lint抱怨CStringT正在传递给Format。互联网上的意见似乎是分歧的。有人说CSting旨在处理这个用例而没有错误,但是其他人(以及MSDN article)表示在传递给变量参数函数时应该总是强制转换.Clipoverflow可以就此问题达成共识吗? / p>

1 个答案:

答案 0 :(得分:3)

CString经过精心设计,可以作为变量参数列表的一部分传递,因此以这种方式使用它是安全的。而且您可以相当确定Microsoft会注意不要破坏这种特殊行为。所以,如果你愿意,我会说你可以安全地继续使用它。

那就是说,我个人更喜欢演员。字符串类以这种方式行为并不常见(例如std :: string不是这样),并且为了心理一致性,以“安全”方式执行它可能更好。

P.S。:有关实施细节和有关如何施放的进一步说明,请参阅此thread