2017-07-24 3 views
1

diese Struktur Gegeben:Wie initialisiert man die Struktur mit einem Feld, das auf ein anderes Feld zeigt?

typedef struct test { 
    char field1[20]; 
    char *field2; 
} test_s 

Wie diese Art von Struktur mit einer bestimmten Initialisierung initialisieren kann, zu wissen, dass ich field2 darauf hinweisen will FIELD1?

test_s test = {.field1[0] = '\0', .field2 = .field1}; 

funktioniert nicht.

+0

https: // gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html – rsp

+1

@rsp Vielleicht habe ich etwas falsch gelesen, aber es gibt keine Ahnung, dass Sie "varName.designator" tun können. Tatsächlich lese ich nichts nützliches für meine Situation. Zu welchem ​​Zweck haben Sie dieses Handbuch verlinkt? –

Antwort

5

Im Falle eines Single-Item Erklärung Sie den Namen der Variable wird deklariert verwenden können, weil der Compiler-Adresse jederzeit während der Initialisierung erfolgen kann:

test_s test = {.field1[0] = '\0', .field2 = test.field1}; 

Demo.

+0

Und was, wenn ich den Namen der Variablen nicht kennen kann? –

+2

@ Tom's Was wäre der Kontext dafür? – dasblinkenlight

+0

'#define TEST_CONSTRUCTOR {.field1 [0] = '\ 0', .field2 = .field1}' verwendet wie 'test_s varname = TEST_CONSTRUCTOR'. Ich weiß, dass ich tun kann: #define TEST_CONSTRUCTOR (varName) {.field1 [0] = '\ 0', .field2 = varName.field1} 'Aber ich frage mich, ob es nicht möglich ist, den Variablennamen zu übergeben. –

Verwandte Themen