2016-06-27 12 views
0

Ich habe eine Struktur innerhalb einer Struktur und bei der Initialisierung der äußeren Struktur Ich möchte die innere Struktur als const initialisieren.initialisieren innere Struktur als Konstante in äußeren Struktur Initialisierung

typedef struct A { 
    uint16_t id; 
}A; 

typedef struct B { 
    A a; 
    uint16_t data; 
} 

Ich weiß, ich kann die innere Struktur initialisieren, wenn sie von diesem Code, um die äußere Struktur der Initialisierung:

B test = { 
    { 
    .id = 0x100 
    }, 
    .data = 0 
}; 

Ich weiß, dass ich es auf diese Weise tun:

const A aTest = { 
    .id = 0x100 
}; 
B test = { 
    .a = aTest, 
    .data = 0 

Aber es gibt eine Möglichkeit, die innere Initialisierung direkt konstant zu halten?

+2

Was tun Du meinst "mach diese innere Initialisierung konstant"? Kannst du bitte etwas ausarbeiten? –

+0

Mögliches Duplikat von [Wie initialisiert man eine Struktur in Übereinstimmung mit C-Programmiersprachenstandards] (http://stackoverflow.com/questions/330793/how-to-initialize-a-struct-in-accordance-with-c-programming -language-standards) – wigy

+0

Meinst du, dass 'B test = {.data = 0};' 'test.a.id' implizit auf' 0x100' setzen sollte? – user694733

Antwort

1

Sie müssen das innere Element als const definieren:

typedef struct B { 
    const A a; 
    uint16_t data; 
} B; 

Dann können Sie wie folgt initialisieren:

B test = { 
    { 
    .id = 0x100 
    }, 
    .data = 0 
}; 

Während dies einen Fehler Compiler generiert:

test.a.id=1; 
Verwandte Themen