Fehlermeldungen nachdem ich Code hinzugefügt habe



  • Hallo,

    Entschuldigung wegen dem nicht-viel-sagendem Titel, kann das Problem nicht näher beschreiben weil ich nicht genau weiß was das Problem ist. Ich habe in einer Funktion ein paar Zeilen hinzugefügt, jetzt funktioniert es nicht mehr.

    DWORD WINAPI pspwAMP_startserver(LPVOID data)
    {
    	struct sockaddr_in server, client;
    	SOCKET sock, fd;
    
    	int len;
    	long rc;
    	long data_rc;
    	char commandbuffer[RCVCOMMSIZE];
    	char send_buffer[192];
    	int send_buffer_l;
    
    	/* Ab hier */
    
    	char command_buffer_s[3];
    	int command_buffer_i;
    	char data_length_s[8];
    	int data_length_i;
    	char *rec_buffer;
    	char *rec_data;
    	int psp_disconnected = 0;
    
    	data_rc = 1;
    	rec_buffer = malloc(1);
    	rec_data = malloc(1);
    
    	/* Bis hier ist alles neu */
    
    	// Start winsock
    	WORD wVersionRequested;
    	WSADATA wsaData;
    	wVersionRequested = MAKEWORD (1, 1);
    
    	// Weiterer, u.a. auch neuer Code, aber ich glaube er ist in diesem
    	// Fall nicht wichtig wenn er nicht vor dem Fehlerhaften Code steht,
    	// oder?
    }
    

    Jetzt sagt er

    gen_empty.c(437) : error C2275: 'WORD': Ungültige Verwendung dieses Typs als Ausdruck
    gen_empty.c(437) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'wVersionRequested'
    gen_empty.c(437) : error C2065: 'wVersionRequested': nichtdeklarierter Bezeichner
    gen_empty.c(438) : error C2275: 'WSADATA': Ungültige Verwendung dieses Typs als Ausdruck
    gen_empty.c(438) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'wsaData'
    gen_empty.c(438) : error C2065: 'wsaData': nichtdeklarierter Bezeichner

    Zeile 437 ist die in der steht WORD wVersionRequested; .



  • Füge einfach bei Zeile 1

    #include <windows.h>
    

    und Du wirst viele Kinder haben und bis an Dein Lebensende glücklich sein.



  • Kein unterschied. Das komische ist ja auch dass die Zeilen über die er meckert bereits vorher da standen und funktionierten



  • schieb' mal alles ab zeile 30 acht zeilen höher, vielleicht geht's dann.



  • Das Problem ist

    *** gen_empty.c ***

    Die C-Syntax erlaubt es nicht, daß nach

    variable = 1;

    nochmal sowas wie

    int variable2;

    kommt.



  • Da wird ja der Hund in der Pfanne verrückt! Es geht! Nur warum?

    Wie auch immer: Danke!



  • keksekekse schrieb:

    Das Problem ist

    *** gen_empty.c ***

    Die C-Syntax erlaubt es nicht, daß nach

    variable = 1;
    nochmal sowas wie
    int variable2;
    kommt.

    Hallo keksekekse,
    ist das in irgendeinen ANSI Standard dokumentiert oder ist das Compilerabhänigig, das manche das Zulassen und manche nicht?

    Greetz



  • /* Legal nach C89 und C99 */
    int foo;
    int bar;
    
    a = foo;
    b = bar;
    
    /* Illegal nach C89, legal nach C99 */
    int a;
    a = foo;
    
    int b;
    b = bar;
    


  • ...und um möglichst kompatibel zu bleiben, sollte man sich an C89 halten. dann geht's überall
    🙂



  • Darüber kann man sich sicher streiten. Ich würde z.B. in einem Projekt welchem ein ordentlicher C99-Compiler zugrundeliegt auf Kompatibilität zu C89 pfeiffen.



  • Tim schrieb:

    Darüber kann man sich sicher streiten. Ich würde z.B. in einem Projekt welchem ein ordentlicher C99-Compiler zugrundeliegt auf Kompatibilität zu C89 pfeiffen.

    das ist nicht gut, weil man den code dann nicht mit C89-compilern übersetzen kann. andersrum, ein C99-compiler frisst auch C89-code, ist es besser.
    C89-compiler sind leider noch sehr verbreitet.
    du hast natürlich recht, es ist schon ansichtssache, aber für mich ist wiederverwendbarkeit von code relativ wichtig.
    🙂


Anmelden zum Antworten