Предположим, у меня есть набор массивов, строк и констант:
const int a[]={0x01, 0x02};
const int b[]={2,0};
const int c=234;
const char* name="foo";
, которые вместе составляют объект foo.
И есть много похожих объектов, таких как
const int a[]={0x04, 0x02, 0x03};
const int b[]={2,0,1};
const int c=1234;
const char* name="arfle";
Каков наилучший способ объявить эти объекты в C? (в частности, gcc, и у меня нет проблем с расширениями только для gcc, c99 и т. д.)
Я надеюсь на что-то вроде
thing[0]={a={0x04, 0x02, 0x03}, b={2,0,1}, c=1234, name="arfle"};
thing[1]={a={0x01, 0x02}, b={2,0}, c=234, name="foo"};
printf("%s", thing.name);
Но подойдет любой аккуратный метод решения общей проблемы.
Я могу поставить максимальную длину для любого из массивов, хотя и дополнительная заслуга, если мне не нужно.
У меня нет никаких проблем с обманом препроцессора, и инициализация во время выполнения не убьет меня, хотя я бы предпочел избежать этого, если это возможно.