您使用的语法是错误的。如下使用它。
#include <stdio.h>
enum bool // if *typedef enum* is used instead, it's working fine
{
_false,
_true,
} ;
enum bool func1(enum bool );
int main()
{
printf("Return Value = %d\n\n", func1(_true));
return 0;
}
enum bool func1(enum bool status)
{
return status;
}
相反,如果您使用 typedef,您可以直接使用bool
而不是enum bool
.
还要引用 C99 标准:
Section 7.16 Boolean type and values < stdbool.h >
1 The header <stdbool.h> defines four macros.
2 The macro
bool expands to _Bool.
3 The remaining three macros are suitable for use in #if preprocessing directives. They are
true : which expands to the integer constant 1,
false: which expands to the integer constant 0, and
__bool_true_false_are_defined which expands to the integer constant 1.
4 Notwithstanding the provisions of 7.1.3, a program may undefine and perhaps then redefine the macros bool, true, and false.
如果你有一个编译为 C99标准的编译器,那么你可以只包含stdbool.h
和使用 bool like bool b = true;
.