Softwareentwicklung
›
Thread
Was ist das für ein struct?
CJ
Christian J.
Gast
31.10.2015 23:21
#4331424
Hallo,
man entdeckt doch immer wieder was Neues. Kann mir jemand mal sagen, wie
dieser Struct aus dem OpenPilot Projekt zu verstehen ist? Was hat es mit
den Punkten vor den Namen auf sich?
1 #include <pios_led_priv.h>
2 static const struct pios_gpio pios_leds[] = {
3 [PIOS_LED_HEARTBEAT] = {
4 .pin = {
5 .gpio = GPIOD,
6 .init = {
7 .GPIO_Pin = GPIO_Pin_15,
8 .GPIO_Speed = GPIO_Speed_50MHz,
9 .GPIO_Mode = GPIO_Mode_OUT,
10 .GPIO_OType = GPIO_OType_PP,
11 .GPIO_PuPd = GPIO_PuPd_UP
12 },
13 },
14 .active_low = false
15 },
16 [PIOS_LED_ALARM] = {
17 .pin = {
18 .gpio = GPIOD,
19 .init = {
20 .GPIO_Pin = GPIO_Pin_14,
21 .GPIO_Speed = GPIO_Speed_50MHz,
22 .GPIO_Mode = GPIO_Mode_OUT,
23 .GPIO_OType = GPIO_OType_PP,
24 .GPIO_PuPd = GPIO_PuPd_UP
25 },
26 },
27 .active_low = false
28 },
29 [PIOS_LED_D1] = {
30 .pin = {
31 .gpio = GPIOD,
32 .init = {
33 .GPIO_Pin = GPIO_Pin_13,
34 .GPIO_Speed = GPIO_Speed_50MHz,
35 .GPIO_Mode = GPIO_Mode_OUT,
36 .GPIO_OType = GPIO_OType_PP,
37 .GPIO_PuPd = GPIO_PuPd_UP
38 },
39 },
40 .active_low = false
41 },
42 [PIOS_LED_D2] = {
43 .pin = {
44 .gpio = GPIOD,
45 .init = {
46 .GPIO_Pin = GPIO_Pin_12,
47 .GPIO_Speed = GPIO_Speed_50MHz,
48 .GPIO_Mode = GPIO_Mode_OUT,
49 .GPIO_OType = GPIO_OType_PP,
50 .GPIO_PuPd = GPIO_PuPd_UP
51 },
52 },
53 .active_low = false
54 },
55 };
I
ich
Gast
31.10.2015 23:25
#4331428
Das sind designated initializers, siehe zum Beispiel in der GCC Doku:
https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html
CJ
Christian J.
Gast
31.10.2015 23:34
#4331434
Aha....
Kennt C inzwischen eingentlich sowas wie bei Pascal das WITH statement,
damit man struct Elementen nicht immer den Namen des struct voranstellen
muss?
Also zb
WITH data DO BEGIN
var 1 = 3;
var 2 = 7;
END
Christian J. schrieb:
> Aha....
>
> Kennt C inzwischen eingentlich sowas wie bei Pascal das WITH statement
Nein.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
Noch kein Account?
Die Registrierung ist kostenlos und dauert nur eine Minute.
Jetzt registrieren