我得到了一些我想摆脱的“使用老式样式转换”警告,但是我对此并不了解。
编辑:
HKEY_CURRENT_USER
确实是在WinAPI中定义的,因此我将不理会它。
(LPBYTE)&result
:LPBYTE(&result)
和reinterpret_cast<LPBYTE>(&result)
可以工作,但是我不知道两者是否相等。
那么我应该使用这三个中的哪个?
(const BYTE*)&value
:reinterpret_cast<const BYTE*>(&value)
有用,但又是一样。
那我该用哪两个呢?
更多背景信息:
HKEY hKey;
std::string sResult = "";
if(regOpenKey(KEY_READ, &hKey))
{
DWORD size=1024, type = REG_SZ;
wchar_t result[MAX_PATH];
if(RegQueryValueEx(hKey, key, nullptr, &type, (LPBYTE)&result, &size) == ERROR_SUCCESS)
sResult = str_narrow(result);
}
RegCloseKey(hKey);
和:
HKEY hKey;
if(regOpenKey(KEY_ALL_ACCESS, &hKey))
{
DWORD value = 1;
RegSetValueEx(hKey, key, 0, REG_DWORD, (const BYTE*)&value, sizeof(value));
}
RegCloseKey(hKey);
感谢您的帮助:)
答案 0 :(得分:3)
HKEY_CURRENT_USER
是在WinAPI中定义的,因此请不要理会它。它可能会更改而不会发出警告(尽管不太可能,但是可能)。
(LPBYTE)&result: LPBYTE(&result)
有效,但是我不知道它是否等效。
是的,相同。
(const BYTE*)&value: reinterpret_cast<const BYTE*>(&value)
有效,但还是一样。
还是一样。