Ваш код будет компилироваться и работать, если вы определите struct S_B
до struct S_A
, потому что вы помещаете объект-член типа S_B в определение S_A, что подразумевает, что полный тип S_B должен быть определен в этой точке (если это будет просто указательк объекту тогда неполного типа будет достаточно).
И вы должны поместить присваивания
nestedStruct.a = 5;
nestedStruct.b = 5.9;
nestedStruct.c = 'A';
nestedStruct.my_double_nested_structure.x =4;
nestedStruct.my_double_nested_structure.y =8.9;
nestedStruct.my_double_nested_structure.z ='B';
nestedStruct.my_double_nested_structure.array1[0] ='B';
nestedStruct.my_double_nested_structure.array1[1] ='C';
в какую-то функцию.В глобальной области разрешены только объявления / определения (не выражения выражения и т. Д.).
В глобальной области вы можете использовать список инициализации для своей структуры:
S_A nestedStruct = { 5, 5.9, 'A', { 4, 8.9, 'B', { 'B', 'C' } } };
Списки инициализации разрешены для классовбез явных конструкторов (например, ваших структур) и для массивов таких классов или массивов простых типов.