编译下面的代码时,它会给我一个警告,即
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);
}
答案 0 :(得分:0)
您需要const_cast<char*>("my string literal")
才能摆脱警告。在C ++ 03中,不建议使用从字符串文字(const char*
)到char*
的隐式转换。在C ++ 11中,这种隐式转换是一个错误。
在这种情况下,URLDownloadToFile
接受LPCTSTR
类型的参数,根据const wchar_t*
prepossessor指令定义const char*
或UNICODE
。