Forum: PC-Programmierung C Struct Frage


von Markus R. (mark989)


Lesenswert?

Hi all,

kann mit jemand erklären wie diese Art Members innerhalb eines Structs 
zu verstehen sind??
1
struct net_device_ops {
2
        int                     (*ndo_init)(struct net_device *dev);
3
        void                    (*ndo_uninit)(struct net_device *dev);
4
        int                     (*ndo_open)(struct net_device *dev);
5
        ...
6
};

Bin gerade dabei ein Netzwerkmodul zu schreiben und bin hier gestolpert. 
Ab Zeile 908 in
http://lxr.free-electrons.com/source/include/linux/netdevice.h#L908

Vielen Dank schon ma
gruß Markus

von Sebihepp (Gast)


Lesenswert?

Das sind Pointer auf Funktionen, die wiederum structs als Parameter 
haben.

von Sven P. (Gast)


Lesenswert?

Das sind Zeiger auf Funktionen.

von Markus R. (mark989)


Lesenswert?

Ok verstanden!
Und was ist der Unterschied zwischen diesen Schreibweisen?
1
static const struct netdevice_ops mynet = {
2
3
     ndo_init    : my_net_probe,
4
     ndo_open : my_net_open,
5
     ....
6
7
};
8
9
static const struct netdevice_ops mynet = {
10
11
     .ndo_init    = my_net_probe,
12
     .ndo_open = my_net_open,
13
     ....
14
15
};

Gruß Markus

von Andreas B. (andreas_b77)


Lesenswert?

Beides sind Initialisierungen für structs mit benannten Feldern. Die 
erste Form ist eine GCC-Erweiterung, die zweite ist die Form, die es 
später in den C-Standard geschafft hat. Also tun sie (in GCC) dasselbe, 
aber man sollte die erste Form nicht mehr verwenden.

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.