修复弃用警告
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指令。
编译下面的代码时,它给了我一个警告,即
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指令。