我在Visual Studio上使用\W4警告级别,并且正在编写Windows程序。
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
所有这些参数均未在我的应用程序中使用,因此在编译时会收到警告。
我知道有两种处理方法:
HINSTANCE /*hInstance*/
... UNREFERENCED_PARAMETER
宏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,也不会发出警告。
关于c++ - 使用UNREFERENCED_PARAMETER宏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17192224/