Для чего нужен макрос UNREFERENCED_PARAMETER после return? В MSDN в разделе Using Window Classes есть такой пример: Код (Text): int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; if (!InitApplication(hinstance)) return FALSE; if (!InitInstance(hinstance, nCmdShow)) return FALSE; while (GetMessage(&msg, (HWND) NULL, 0, 0) != 0 && GetMessage(&msg, (HWND) NULL, 0, 0) != -1) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; UNREFERENCED_PARAMETER(lpCmdLine); } Сам макрос UNREFERENCED_PARAMETER определен в winnt.h следующим образом: Код (Text): #define UNREFERENCED_PARAMETER(P) (P) В чем тут фишка?
Макрос нужен для избежания предупреждения компилятора о неиспользованном параметре или переменной. Может быть помещён где угодно в теле процедуры. Можно и без макроса - просто имя переменной и точка с запятой. С макросом код легче управляем - например если надо найти места где есть неиспользованные параметры - ищем UNREFERENCED_PARAMETER во всех файлах проекта.