Вы объявляете перечисление, но не тип. То, что вы хотите, это
typedef enum{false, true} boolean; // false = 0 is expected by most programmers
Есть еще несколько проблем с этим:
* true
и false
являются зарезервированными словами во многих компиляторах C
* явное использование true и false противоречит общей практике булевых выражений в C, где ноль означает false, а все, что не равно нулю, означает true. Например:
int found = (a == b);
<ч />
Изменить: Это работает с GCC 4.1.2:
[wally@zf ~]$ ./a.out
This is the false value of boool
This is the true value of boool
[wally@zf ~]$ cat t2.c
#include<stdio.h>
int main()
{
typedef enum {true,false} boolean;
boolean bl=false;
if(bl==false)
printf("This is the false value of boool\n");
boolean bl1=true;
if(bl1==true)
{
printf("This is the true value of boool\n");
}
return 0;
}