sor*_*rin 6 compiler-warnings visual-c++
以下代码在使用MSVC 2008 编译时生成警告C6284/analyze:在调用函数时需要字符串时,对象作为参数'%s'传递.
CString strTmp, str;
str = L"aaa.txt"
strTmp.Format (L"File: %s", str);
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个不需要的好解决方案 static_cast
微软介绍的CString的带有可变参数函数的用法在这里:
CString kindOfFruit = "bananas";
int howmany = 25;
printf_s( "You have %d %s\n", howmany, (LPCTSTR)kindOfFruit );
Run Code Online (Sandbox Code Playgroud)
作为替代方法,您还可以使用该方法PCXSTR CString::GetString() const;尝试修复警告:
CString strTmp, str;
str = L"aaa.txt"
strTmp.Format (L"File: %s", str.GetString());
Run Code Online (Sandbox Code Playgroud)
CString 的设计缺陷之一是它具有隐式转换功能,这LPCTSTR使得警告没有那么有意义。但无论如何,如果你查看Microsoft 文档,他们实际上在自己的示例中使用了强制转换。我真的不认为有必要static_cast在这里避免 a ,事实上我会欢迎它,因为它确实使隐式转换更加明确,因此更容易发现。
| 归档时间: |
|
| 查看次数: |
2355 次 |
| 最近记录: |