修复弃用警告
Fixing Deprecation Warning
本文关键字:警告 更新时间:2023-10-16
编译下面的代码时,它给了我一个警告,即 deprecated conversion from string constant to 'char*'
.
可以通过哪些方式删除消息(不显式禁止显示警告(?
我尝试用(const char*)
铸造,但无济于事。
#include <windows.h>
int main() {
typedef int * (*MyDownloadToUrl)(void*, char*, char*, DWORD, void*);
HINSTANCE LibHnd = LoadLibrary("Urlmon.dll");
MyDownloadToUrl MyDownloadFunction = (MyDownloadToUrl)GetProcAddress(LibHnd,"URLDownloadToFileA");
MyDownloadFunction(0, "http://MyWebsite.com", "Webpage.htm", 0, NULL);
}
您需要const_cast<char*>("my string literal")
才能摆脱警告。 在 C++03 中,不推荐使用从字符串文本(这是一个const char*
(到 char*
的隐式转换。 在 C++11 中,这种隐式转换是一个错误。
但在这种情况下,URLDownloadToFile
采用类型 LPCTSTR
的参数,根据 UNICODE
prepossessor 指令,将其定义为 const wchar_t*
或 const char*
。
相关文章:
- 警告处理为错误这里有什么问题
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- cppcheck在const std::string[]上引发警告
- GCC对可能有效的代码抛出init list生存期警告
- 如何在BST的这个简单递归实现中消除警告
- 关于std::move的使用,是否有编译警告
- g++ 在某个类成员未初始化时不发出警告
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- 使用typeid警告未使用的变量
- 示例C++项目编译中的警告
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- 如何修复编译器警告 C6386 和 C6385?
- 返回语句后的代码,没有警告
- 获取隐式转换溢出从无符号到已签名的警告
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 在未链接的部分上生成警告
- 警告 C4552:">>":未使用表达式的结果
- 禁止显示由于常量为零而比较始终为假的警告
- C++ 警告:将新创建的 gsl::owner<> 分配给非所有者
- 为什么布尔开关语句有编译器警告?