修复弃用警告

时间:2015-07-21 01:23:41

标签: c++ mingw

编译下面的代码时,它会给我一个警告,即 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);
}

1 个答案:

答案 0 :(得分:0)

您需要const_cast<char*>("my string literal")才能摆脱警告。在C ++ 03中,不建议使用从字符串文字(const char*)到char*的隐式转换。在C ++ 11中,这种隐式转换是一个错误。

在这种情况下,URLDownloadToFile接受LPCTSTR类型的参数,根据const wchar_t* prepossessor指令定义const char*UNICODE