Умм ... исходя из того, что вы там написали, вы, вероятно, можете использовать союз. Кажется, что ответы, которые дают другие, ориентированы на сопоставление имен и чисел. Если это то, что вы ищете (например, возможность печатать имена), то их ответы будут лучше. Однако мне кажется, что вы просто ищете ясность в коде, чтобы позволить вам ссылаться на вещи по имени или номеру, в этом случае, я думаю, было бы идеальным объединение. Это именно тот тип вещей, который позволяет делать язык низкого уровня, такой как С.
union my_cars {
struct names {
int saab;
int ford;
...
}
int[NUM_MAKES] nums;
}
Вы должны быть осторожны, чтобы убедиться, что NUM_MAKES синхронизируется с количеством определяемых вами марок. Тогда вы можете сделать что-то вроде:
my_cars.names.saab = 20;
my_cars.nums[0] = 30;
И изменить тот же элемент.
К вашему сведению, мой C немного ржавый, поэтому там могут быть синтаксические ошибки, не стесняйтесь исправлять.
EDIT:
Ах, я прочитал некоторые другие ответы, используя ENUM или DEFINE, и они могли бы быть на самом деле проще / проще, чем этот ... но профсоюзы все еще стоит знать.