Forum: PC-Programmierung C Signale Signatur


von Walter (Gast)


Lesenswert?

Hallo Forum,

könnt ihr mal mal erklären wie man den Code lesen muss, ich verstehe die 
"Signatur" des Beispielcodes nicht. Warum kann da das "int signumber;" 
dazwischen sein? Und falls es eine valide Codeform ist, was ist das und 
wie nennt man das?

void sig_usr(signumber)
int signumber;
{
   /* code des signalhandlers */
}

von ingo (Gast)


Lesenswert?

Das ist eine alte Funktionsdeklaration nach K&R,
signummer ist im prototypen nur angegeben und wird dann in der nächsten 
Zeile deklariert.

von noch ein Gast (Gast)


Lesenswert?

ingo schrieb:
> Das ist eine alte Funktionsdeklaration nach K&R,
> signummer ist im prototypen nur angegeben und wird dann in der nächsten
> Zeile deklariert.

Das stimmt, es handelt sich hierbei um eine alte Schreibweiße.

Nach eheutigem Standard wird es so geschrieben :

void sig_usr( int signumber )

{

...

}

von Walter (Gast)


Lesenswert?

Danke, aber kannst Du das noch etwas ausführlicher beschreiben, bzw ein 
Stichwort für die Suche geben? Ich hab keine Ahnung, wonach ich suchen 
soll.

Ist das nur bei Signalen so? Oder ist das bei K&R für viele Funktionen 
so üblich?

von Walter (Gast)


Lesenswert?

Oh, ich glaub jetzt hab ichs verstanden ...

void test(int arg) { }
ist aequivalent zu
void test (arg) int arg; {}

richtig?

von Karl H. (kbuchegg)


Lesenswert?

Walter schrieb:
> Danke, aber kannst Du das noch etwas ausführlicher beschreiben, bzw ein
> Stichwort für die Suche geben? Ich hab keine Ahnung, wonach ich suchen
> soll.

Es ist heutzutage, denke ich, schwierig noch Literatur zu finden, die 
sich mit Kerighan Ritchie C beschäftigt, so wie das C früher mal 
ausgesehen hat und mit den Regeln, die damals galten.
Dieses C wird seit rund 25 Jahren nicht mehr 'gesprochen'.

> Ist das nur bei Signalen so? Oder ist das bei K&R für viele Funktionen
> so üblich?

Du missverstehst da etwas. Das ist eine alte Schreibweise. So wie man 
vor 100 Jahren auch in Deutsch noch anders geschrieben und gesprochen 
hat. Einen Goethe im Original zu lesen würde dir genauso seltsam 
vorkommen. Irgendwie scheint in seiner benutzten Sprache alles vertraut 
und dann doch wieder nicht.

K&R C ist spätestens seit dem C89 Standard (aus dem Jahre 1989) obsolet. 
Ganz im Gegenteil, das will man ganz sicher nicht mehr haben. Viel zu 
fehleranfällig.

Wo hast du denn diesen Code-Methusalem ausgegraben? Wenn man sowas 
heutzutage noch sieht, sollte man sich ganz schnell 3 mal bekreuzigen 
und die Hasenpfote suchen gehen.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Walter schrieb:
> Oh, ich glaub jetzt hab ichs verstanden ...
>
> void test(int arg) { }
> ist aequivalent zu
> void test (arg) int arg; {}
>
> richtig?

richtig. So würde man aus der alten Form die neue machen.

von Walter (Gast)


Lesenswert?

Danke !

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.