修复弃用警告

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*