Объявить переменные в верхней части функции или в отдельных областях?

Какой предпочтительный метод, метод 1 или метод 2?

Метод 1:

LRESULT CALLBACK wpMainWindow(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    switch (msg)
    {
        case WM_PAINT:
        {
            HDC hdc;
            PAINTSTRUCT ps;

            RECT rc;
            GetClientRect(hwnd, &rc);           

            hdc = BeginPaint(hwnd, &ps);
            // drawing here
            EndPaint(hwnd, &ps);
            break;
        }
        default: 
            return DefWindowProc(hwnd, msg, wparam, lparam);
    }
    return 0;
}

Метод 2:

LRESULT CALLBACK wpMainWindow(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    RECT rc;

    switch (msg)
    {
        case WM_PAINT:
            GetClientRect(hwnd, &rc);

            hdc = BeginPaint(hwnd, &ps);
            // drawing here
            EndPaint(hwnd, &ps);
            break;

        default: 
            return DefWindowProc(hwnd, msg, wparam, lparam);
    }
    return 0;
}

В методе 1, если msg = WM_PAINT, когда Вызывается функция wpMainWindow, выделяет ли она память для всех переменных в стеке в начале? или только когда он входит в область действия WM_PAINT?

Будет ли метод 1 использовать память только тогда, когда сообщение - WM_PAINT, а метод 2 будет использовать память независимо от того, какое сообщение равно значению?

36
задан Jonathan Leffler 22 September 2010 в 20:56
поделиться