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é