Komische Funktion ?



  • Hi habe ein Frage generell zur Funktionsbildung:

    Kenne immer nur diesen Style:

    Rückgabewert Funktionsname(Parameter1, Parameter2)
    {
    }

    Aber in einem Beispiel wird folgendes verwendet:
    (Hinter der Argumentklammer sind 2 weitere Variablen!)

    void *
    write_2(argp, clnt)
    	writeargs *argp;
    	CLIENT *clnt;
    {
    	static char res;
    
    	bzero((char *)&res, sizeof(res));
    	if (clnt_call(clnt, WRITE, xdr_writeargs, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
    		return (NULL);
    	}
    	return ((void *)&res);
    }
    

    Weiss jemand was das ist ??



  • K&R C - das C bevor es standardisiert wurde.
    Da wurden Funktionsparameter auf diese Art, also zwischen Kopf und Körper definiert.



  • Fritzerl schrieb:

    Kenne immer nur diesen Style:

    Rückgabewert Funktionsname(Parameter1, Parameter2)
    {
    }

    Das ist der ANSI-C-Stil.

    void *
    write_2(argp, clnt)
    	writeargs *argp;
    	CLIENT *clnt;
    {
    

    Das ist Kernighan&Ritchie-Stil, also vor ANSI-C. Begegnet einem häufig bei älterem Code (vor 1989), ist heute AFAIK nicht mehr erlaubt.



  • Vielen Dank für deine schnelle Antwort 🙂

    Hmmm...das ist aber komisch...der Code ist von einem RPC Programm aus
    Linux. Habe es frisch mit Suse 9.1 rpcgen aus einer x.File generiert.
    Das würde ja dann bedeuten, das RPC unter Suse-Linux ja garnicht ANSI-Konform ist ?? Aber der gcc compiler nimmt es ohne Probleme und ich dachte, der hält sich an die ANSI-Konformen ? Kannst du mir es etwas genauer erklären ?

    Gruss

    Finalbrain



  • Vielen Dank

    hat sich erledigt!!

    Hatte eine alte datei mit meiner aktuellen verwechselt!!

    Dachte schon...*lol

    GRuss an alle

    Finalbrain


Anmelden zum Antworten