initializer expression list treated as compound expression



  • Hallo,

    letztes mal wurde mir so gut geholfen und nu stehe ich wieder vor einem Problem:

    Ich bin dabei ein sehr einfaches Programm mit einer MessageBox zu erstellen, dabei erhallte ich den oben genannten Fehler. Mein Code ist:

    #include <windows.h>
    
    int main()
    {
        int MessageBox(NULL,"Text","Titel",MB_OK);
    }
    

    Ich weiß nicht wo der Fehler liegt.

    MfG Tobias

    EDIT: Ich benutze den DEV c++ Compiler (Version: 4.9.9.2)



  • #include <windows.h>
    
    int main()
    {
        int returnvalue = MessageBox(NULL,"Text","Titel",MB_OK);
    }
    

    Probiers mal so 😉



  • Jetzt erhalte ich folgenden Fehler:

    `MessageBoxA' undeclared (first use this function) 
    (Each undeclared identifier is reported only once for each function it appears in.)
    


  • Das ist Windows-spezifisch, deshalb kennen sich in diesem Unterforum vielleicht nicht allzuviele damit aus. Spring doch mal zu dem Fehler, vielleicht siehst du da etwas...

    Übrigens wäre es gut, wenn du von Dev-C++ wegkommen würdest, da dieser veraltet ist und nicht mehr weiterentwickelt wird. Vorschläge für moderne IDEs wären Code::Blocks und Microsoft Visual C++ 2008 Express.



  • Du kannst ja mal probieren, noch zusätzlich

    #include<winuser.h>
    

    einzubinden, hat bei mir manchmal viele probleme behoben 😃



  • Was ist gemeint mit "zum Fehler springen"???
    Im Quelltext oder wo?

    P.S. DEV wurde mir empfohlen ... 😉



  • Mit der winuser.h ist der Fehler noch vorhanden



  • Mhhmmm ok, und wir empfehlen dir DRINGENST nimm Code::Blocks.Und schmeiß Dev weg. Ansonsten, bin ich mit meinem Latein leider auch am Ende.



  • Ich habe jetzt Code::Blocks.

    Das Programm gefällt mir sehr gut, nur leider ändert es an der Fehlermeldung nichts.

    DEV ist gelöscht 😉



  • tcpp schrieb:

    Was ist gemeint mit "zum Fehler springen"???
    Im Quelltext oder wo?

    Ja, wenn du auf die Fehlermeldung doppelklickst (oder der Zeilenangabe folgst).

    Firefighter schrieb:

    Mhhmmm ok, und wir empfehlen dir DRINGENST nimm Code::Blocks.

    Oder eben MSVC++ 2008 Express. 😉



  • Hallo,

    heute habe ich das ganze nochmal mit Visual C++ Express ausprobiert.

    Download & Installation hat fast 1 Std. gedauert.

    Nachdem ich es dann auch den (hoffentlich) Button für das Kompilieren gefunden hatte, zeigte er erstmal

    1>------ Erstellen gestartet: Projekt: MessageBox, Konfiguration: Debug Win32 ------
    1>Kompilieren...
    1>cl : Befehlszeile warning D9035 : Die Option "Wp64" ist veraltet und wird in einer der nächsten Versionen entfernt.
    1>messagebox.cpp
    1>c:\Dokumente und Einstellungen\Tobias\Eigene Dateien\C++\MessageBox\messagebox.cpp(5) : error C2078: Zu viele Initialisierungen
    1>Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Tobias\Eigene Dateien\C++\MessageBox\Debug\BuildLog.htm" gespeichert.
    1>MessageBox - 1 Fehler, 1 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

    Ich glaube das bedeutet, dass das Kompilieren nicht geklappt hat... Was mache ich falsch 😕 😕



  • Zu welchem Code? Projekteinstellungen?



  • Folgender Code:

    #include <windows.h>
    
    int main()
    {
        int MessageBox(NULL,"Text","Titel",MB_OK);
    }
    

    Projekteinstellungen???

    Was soll ich denn da einstellen?



  • Ist es ein Windowsprojekt?

    Hast du die nötigen libs gelinkt?



  • Windowsprojekt: Ja

    "die nötigen libs gelinkt": Wie linkt man denn bei VC++ Express libs? Und welche?



  • OK. Libs sind schon gelinkt, wenn du die neue Version hast..

    Hast du dir deinen Code überhaupt mal angesehen? Was macht dort das int?

    Das hier sollte gehen:

    #include <windows.h>
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int CmdShow)
    {
    	::MessageBox (0,"Hallo, Windows","Hi",MB_OK );
    }
    

    Im übrigen brauhst du einen anderen Einstiegspunkt.



  • DANKE...

    Hat super geklappt!!!

    Das mit dem int habe ich aus einer Website, wo sie die MessageBox(...); erklärt haben (Hier)

    Vorher hat das aber auch ohne das "int WINAPI WinMain [...]" geklappt. Kann sein, dass damals da kein int stand.

    Nochmal Danke 👍



  • tcpp schrieb:

    Das mit dem int habe ich aus einer Website, wo sie die MessageBox(...); erklärt haben (Hier)

    Ist dir eigentlich der Unterschied zwischen einer Funktionsdeklaration und einem Funktionsaufruf bekannt? Die Seite hat die Deklaration angegeben [und so wirst du es in fast allen Beschreibungen sehen, die keine Codebeispiele sind], diese kann man aber nicht 1:1 als Aufruf kopieren. Wenn du damit bereits Probleme hast, solltest du von der Windowsprogrammierung nochmal ein wenig Abstand nehmen, und erstmal zu den C++ Grundlagen zurückkehren.

    cu André


Log in to reply