[C] Syntax-Fehler



  • Hey,
    ich probiere mich gerade an C und habe deshalb mal folgenden Code geschrieben (wie in einem Tutorial):

    LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
        switch (msg) {
               case WM_CREATE:
                    HMENU hMenubar;
                    HMENU hMenu;
                    hMenubar = CreateMenu();
                    hMenu = CreateMenu();
    
                    AppendMenu(hMenu, MF_STRING, IDM_FILE_NEW, "&New");
                    AppendMenu(hMenu, MF_STRING, IDM_FILE_OPEN, "&Open");
                    AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
                    AppendMenu(hMenu, MF_STRING, IDM_FILE_QUIT, "&Quit");
                    AppendMenu(hMenubar, MF_POPUP, (UINT_PTR)hMenu, "&File");
    
                    SetMenu(hwnd, hMenubar);
                    break;
               case WM_DESTROY:
                    PostQuitMessage(0);
                    return 0;
        }
        return DefWindowProc(hwnd, msg, wParam, lParam);
    }
    

    Das Problem ist, dass mein Compiler meldet, dass sich vor hMenubar ein Syntax-Fehler befindet. Genaueres gibt er nicht an... Ich habe mir den Code jetzt sicher schon 50 mal genau angesehen, konnte jedoch einfach keinen Syntax-Fehler erkennen 😞
    Könnt ihr mir da weiter helfen?
    Danke schon mal.

    MfG,
    -haiyyu_



  • Dein Compiler gibt doch sicher eine genauere Fehlerbeschreibung raus als "Hey, da ist ein Syntax-Fehler"...

    EDIT: windows.h hast du aber inkludiert, oder?



  • Genaue Ausgabe:

    In function 'WndProc':
    syntax error before "hMenubar"
    

    MfG,
    -haiyyu_



  • Sorry für Doppelpost,
    klar habe ich windows.h inkludiert.

    include <windows.h>
    

    MfG,
    -haiyyu_



  • Ach klar: du musst den Inhalt des case-Zweiges in geschweifte Klammern einschließen, wenn du in diesem Variablen deklarieren willst.

    Also:

    switch(bla) {
      case 1:
      {
        ...
      }
    }
    


  • Hey,
    vielen Dank! Jetzt funktioniert es. (war noch ein wenig von C++ gewöhnt, da musste man das nicht machen)

    MfG,
    -haiyyu_



  • haiyyu_ schrieb:

    Hey,
    vielen Dank! Jetzt funktioniert es. (war noch ein wenig von C++ gewöhnt, da musste man das nicht machen)

    MfG,
    -haiyyu_

    Ähm, doch ich glaube schon.



  • int i=0;
    	switch(i) {
    		case 1:
    			int x=0;
    		case 2:
    			int y=1;
    	}
    

    Also mein C++-Compiler (MS) meckert da...



  • Hey,
    komisch... Naja, vllt. habe ichs ja übersehen 😃

    MfG,
    -haiyyu_


Anmelden zum Antworten