我在 Visual Studio 上使用 \W4 警告级别,并且正在编写 Windows 程序。
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
所有这些参数都没有在我的应用程序中使用,因此我在编译时收到警告。
我知道有两种方法可以解决这个问题:
- 注释参数
HINSTANCE /*hInstance*/
...
-
使用UNREFERENCED_PARAMETER
macro
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
UNREFERENCED_PARAMETER(hInstance);
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
UNREFERENCED_PARAMETER(nCmdShow);
哪一个是正确的?哪一种使用起来比较安全?使用宏有什么问题吗?
我更喜欢评论参数。
宏 UNREFERENCED_PARAMETER 是在 winnt.h 中定义的,因此不可移植。
如果稍后您确实引用了它,您可能会忽略删除宏。
编辑:使用 C++17,您现在可以使用 [[maybe_unused]] 属性。这对于依赖于预处理器宏的代码很有用:
void foo( [[maybe_unused]] int value )
{
#ifdef USE_VALUE
useValue(value);
#endif
}
现在,即使 USE_VALUE 未定义,也不会出现警告。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)