c++ - 如何处理这些旧式演员表?
问题描述
我收到了一些我想摆脱的“使用旧式演员表”警告,但我对此知之甚少。
编辑:
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);
谢谢你的帮助 :)
解决方案
HKEY_CURRENT_USER
是在 WinAPI 中定义的,所以不要管它。它可能会在没有警告的情况下发生变化(虽然不太可能,但可能)。
(LPBYTE)&result: LPBYTE(&result)
有效,但同样,我不知道它是否等效。
是的,它是一样的。
(const BYTE*)&value: reinterpret_cast<const BYTE*>(&value)
工作,但同样的事情。
又是一样。
推荐阅读
- css - 应用过渡和变换的不同方式?
- selenium-webdriver - 在 selenium webdriver 中处理打印窗口
- android - 更新 androidx 库时 APK 大小增加?
- c# - 从引用的程序集自动生成主要方法
- python - 我需要为简单的 python 脚本使用数据库吗?
- android-studio - 方法 setText() 必须从 UI Thread 调用,目前推断线程为工作线程
- mysql - mysql - 获取最新可接受差距的日期
- android - 如何使用 C++ 类在 Android NDK 中获取屏幕 DPI (PPI)?
- javascript - div CSS 加载动画没有显示?
- ios - 如何在 UITests 中引用 MKMapView?