代码之家  ›  专栏  ›  技术社区  ›  Justin Love

我是否应该强制转换一个传递给FORMAT/PRINTF(通常是varargs)的CString?

  •  1
  • Justin Love  · 技术社区  · 15 年前

    我最近在一个小型MCF C++应用程序中,它显然处于工作状态。为了开始,我在运行pc lint代码,lint抱怨cstringt正在被传递到format。互联网上的意见似乎有分歧。有人说CSTING设计用于无错误地处理这个用例,但其他人(和 MSDN article) 假设它在传递给变量参数函数时总是被强制转换。StackOverflow能否就此问题达成任何共识?

    1 回复  |  直到 15 年前
        1
  •  3
  •   dseifert    15 年前

    CString被精心设计为作为变量参数列表的一部分传递,因此这样使用是安全的。你可以相当肯定,微软会小心不要破坏这种特殊的行为。如果你愿意的话,我想说你可以继续这样使用它。

    也就是说,我个人更喜欢演员阵容。字符串类以这种方式工作(例如std::string不这样做)是不常见的行为,而且为了保持精神上的一致性,最好以“安全”的方式进行。

    P.S.:看到这个 thread 有关实施细节和有关如何强制转换的进一步说明。