Я полагаю, вы смешиваете присваивание и инициализацию.
В современном C, AKA C99, лучший способ инициализации struct
- это "назначенные инициализаторы"
struct aStruct A = { .val1 = 0, .val2 = 0x0A };
и синтаксис для массивов структур просто повторяет это:
struct aStruct B[] = {
{ .val1 = 0, .val2 = 0x0A },
{ .val1 = 2, .val2 = 0x0B }
};
Но вы не должны делать это с extern
впереди.Это для прямого объявления в заголовочном файле без части инициализации.
Если вы действительно имели в виду присвоение, для struct
вы можете использовать «составные литералы
A = (struct aStruct){ .val1 = 0, .val2 = 0x0A };
, но вывероятно, известно, что для массивов нет синтаксиса присваивания.