Nie podobała mi się żadna z tych odpowiedzi, więc zrobiłem własną. Nie wiem, czy to ANSI C, czy nie, to tylko GCC 4.2.1 w trybie domyślnym. Nigdy nie pamiętam braketingu, więc zaczynam od podzbioru moich danych i walczę z komunikatami o błędach kompilatora, dopóki się nie zamknie. Czytelność jest moim pierwszym priorytetem.
// in a header:
typedef unsigned char uchar;
struct fields {
uchar num;
uchar lbl[35];
};
// in an actual c file (I have 2 in this case)
struct fields labels[] = {
{0,"Package"},
{1,"Version"},
{2,"Apport"},
{3,"Architecture"},
{4,"Bugs"},
{5,"Description-md5"},
{6,"Essential"},
{7,"Filename"},
{8,"Ghc-Package"},
{9,"Gstreamer-Version"},
{10,"Homepage"},
{11,"Installed-Size"},
{12,"MD5sum"},
{13,"Maintainer"},
{14,"Modaliases"},
{15,"Multi-Arch"},
{16,"Npp-Description"},
{17,"Npp-File"},
{18,"Npp-Name"},
{19,"Origin"}
};
Dane mogą rozpoczynać życie jako plik rozdzielany tabulatorami, który należy przeszukiwać i zamieniać w coś innego. Tak, to są rzeczy Debiana. Tak więc jedna zewnętrzna para {} (wskazująca tablicę), a następnie kolejna para dla każdej struktury wewnątrz. Z przecinkami między. Umieszczanie rzeczy w nagłówku nie jest absolutnie konieczne, ale mam około 50 elementów w mojej strukturze, więc chcę je w osobnym pliku, zarówno po to, aby nie bałagan w moim kodzie, więc łatwiej jest go zamienić.