using bool in c (within a structure)
我想在C中使用一个布尔变量作为一个标志,在一个结构中,但是C没有任何关键字"bool"使它成为可能。我在这里得到了一些相关的信息:在C中使用布尔值基本上,我试过这个
1 2 3 4 5 6 7 8 | struct bookshop { char name[20]; char issuer[20]; int id; typedef enum { false, true } flag; }; |
若要获取以下错误,请在此行中:"typedef enum false,true flag";此行有多个标记-前面应有说明符限定符列表"TyPulf"-无法解析类型"flag"-语法错误
请帮助!并提前感谢:)
不能将
1 2 3 4 5 6 7 8 9 | typedef enum { false, true } bool; struct bookshop { char name[20]; char issuer[20]; int id; bool flag; }; |
如果您有
不能在声明中定义新类型。首先必须声明bool typedef,然后才能使用它作为结构,即:
1 2 3 4 5 6 7 8 9 | typedef enum { false, true } bool; struct bookshop { char name[20]; char issuer[20]; int id; bool flag; }; |
如果只想声明
1 2 3 4 5 6 7 | struct bookshop { char name[20]; char issuer[20]; int id; enum { false, true } flag; }; |
应该这样做。
还要注意,有一个标准的头stdbool.h,这样您就可以这样做了。
1 2 3 4 5 6 7 | struct bookshop { char name[20]; char issuer[20]; int id; bool flag; }; |
传统上,int类型用于保存"布尔"值:非零值为true,零值为false。
自c99以来,您可以使用stdbool.h中定义的宏和值:
bool _Bool
true integer constant 1
false integer constant 0
__bool_true_false_are_defined integer constant 1
但是要注意与旧代码的兼容性,以及标准C将值测试为真或假的方式。如前所述,以下代码:
将打印