Search code examples
cwindowsconsoletui

What's wrong with this C declaration Code?


#include <stdlib.h>
#include <Windows.h>
#include <Tchar.h>

HANDLE wHnd;    // Handle to write to the console.
HANDLE rHnd;    // Handle to read from the console.

int _tmain(int argc, _TCHAR* argv[]) {

    // Set up the handles for reading/writing:
    wHnd = GetStdHandle(STD_OUTPUT_HANDLE);
    rHnd = GetStdHandle(STD_INPUT_HANDLE);

    // Change the window title:
    SetConsoleTitle(TEXT("Win32 Console Control Demo"));

    // Set up the required window size:
    SMALL_RECT windowSize = {0, 0, 79, 49};

    // Change the console window size:
    SetConsoleWindowInfo(wHnd, TRUE, &windowSize);

}

Some errors like this are reported:

'SMALL_RECT' : illegal use of this type as an expression  
missing ';' before identifier 'windowSize'

Solution

  • You are using the MS C compiler which only supports the now ancient C90 standard. All your variables must be declared at the top of the function body.

    int _tmain(int argc, _TCHAR* argv[])
    {    
        // Set up the required window size:
        SMALL_RECT windowSize = {0, 0, 79, 49};
    
        // Set up the handles for reading/writing:
        wHnd = GetStdHandle(STD_OUTPUT_HANDLE);
        rHnd = GetStdHandle(STD_INPUT_HANDLE);
    
        // Change the window title:
        SetConsoleTitle(TEXT("Win32 Console Control Demo"));
    
        // Change the console window size:
        SetConsoleWindowInfo(wHnd, TRUE, &windowSize);
    }
    

    Painful, isn't it?!