Lpp*_*Edd 8 c++ parameters macros compiler-warnings visual-studio
我在Visual Studio上使用\ W4警告级别,而我正在编写Windows程序.
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
Run Code Online (Sandbox Code Playgroud)
我的应用程序中没有使用所有这些参数,因此我在编译时收到警告.
我知道有两种方法可以解决这个问题:
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);
Run Code Online (Sandbox Code Playgroud)哪一个是正确的?哪一个更安全?使用宏有什么问题吗?
我更愿意评论这些参数.
宏UNREFERENCED_PARAMETER在winnt.h中定义,因此不可移植.
如果以后你引用它,你可能会忽略删除宏.
编辑:使用C++ 17,您现在可以使用[[maybe_unused]]属性.这对于取决于预处理器宏的代码很有用:
void foo( [[maybe_unused]] int value )
{
#ifdef USE_VALUE
useValue(value);
#endif
}
Run Code Online (Sandbox Code Playgroud)
即使未定义USE_VALUE,也不会出现警告.
| 归档时间: |
|
| 查看次数: |
12051 次 |
| 最近记录: |