修复弃用警告

Fixing Deprecation Warning

编译下面的代码时,它给了我一个警告,即 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 的参数,它被定义为 const wchar_t*const char* 取决于 UNICODE prepossessor指令。