Это просто определение перечисления, типа, который может принимать только дискретное число значений, то есть значений, заключенных в эти скобки. Каждому из этих значений присваивается имя, которое вы позже сможете использовать для ссылки на него. Если вы указываете только имя значений, а не фактическое значение, компилятор устанавливает их для вас в порядке возрастания, начиная с нуля для первого элемента.
См. Вики-статью о перечисляемых типах (и, в частности, разделе C ) для получения дополнительной информации.
Это конкретное перечисление определяет логический тип, то есть тип, который может принимать только два значения: true и false, где false =! True. Логические значения очень часто используются в программировании, например, в качестве флагов, указывающих, выполняется ли условие, и на самом деле многие языки включают их как нативный тип (например, C ++ и C99).
Кстати, чтобы определить это перечисление это:
enum Bool
{
false = 0,
true = 1
};
будет достаточно; однако из-за того, как C был разработан для объявления переменной типа Bool с этим кодом, вам необходимо всегда ставить ключевое слово enum перед Bool:
enum Bool myFlag=true;
Вместо этого, используя трюк с typedef, вы определяете анонимное перечисление, созданное таким образом, а затем вы предоставляете ему псевдоним Bool; таким образом, вы можете просто сделать:
Bool myFlag=true;