Funktion singal()

01/05/2011 - 18:40 von Markus Steinborn | Report spam
Hallo,

ich habe eine Frage, wie ich die Manpage signal(2) lesen soll, diese
beginnt bei mir mit:

NAME
signal - ANSI C signal handling

SYNOPSIS
#include <signal.h>

typedef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t handler);

Das ich den "include" in meinen Programm aufnehmen soll, ist klar. Aber
was ist mit den "typedef"? Sollte man den unveràndert übernehmen? Oder
besser den Namen des Types (hier: sighandler_t) abàndern?

Sind bei einer der von mir genannten Möglichkeiten Nachteile zu erwarten?

Zum Hintergrund: Unter RHEL 5 wird der Typ sighandler_t bereits durch
einen include (ich vermute, durch die Headerdatei "signal.h") definiert,
unter MacOS X dagegen nicht.



Grüße

Markus Steinborn
 

Lesen sie die antworten

#1 Rainer Weikusat
01/05/2011 - 20:54 | Warnen spam
Markus Steinborn writes:
NAME
signal - ANSI C signal handling

SYNOPSIS
#include <signal.h>

typedef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t handler);

Das ich den "include" in meinen Programm aufnehmen soll, ist
klar. Aber was ist mit den "typedef"? Sollte man den unveràndert
übernehmen? Oder besser den Namen des Types (hier: sighandler_t)
abàndern?



Der typedef-Name dient eigentlich nur dazu, den Prototyp einigermassen
lesbar zu gestalten. Aufgrund der etwas 'eigenwilligen' C-Syntax fuer
die Deklaration von Funktionszeigern saehe er andernfalls so aus:

void (*signal(int signum, void (*handler)(int)));

C kennt allerdings auch Funktionstypen weswegen eine weitere
'Vereinfachungsmoeglichkeit' so aussaehe:

typedef void sighandler(int);

sighandler *signal(int signum, sighandler *handler)

Ähnliche fragen