Linux下的编译器gcc或者g
都不支持bool类型的变量,因为c语言中本来是没有bool类型,只是有些编译器中自行添加了bool类型。
在linux下c语言程序中一般通过int类型来代替bool类型。但是还有一下方法可以使用:
1.可以通过宏定义#define bool int
2.可以定义一个enum类型的变量,例如enum bool{false=0,true=1};
需要注意的是 枚举类型在linux和windows环境下的区别:
enum声明是一样的;
但是enum变量的定义不同,即在linux下必须使用enum enum名称变量名;就算是把枚举类型作为函数返回值类型时也必须这样使用,
在window下除了上述跟linux下一样之外,还可以将enum去掉直接使用,即enum名称变量名称;
枚举变量的赋值、比较不同,即linux下可以直接将枚举变量和整数直接进行比较、赋值等操作,
但是windows下,如果将整数赋值给枚举类型变量时,必须在前面加上强制类型转换,即变量名=(enum名称)整数;
今天在linux下编了一个C程序,用到了bool类型,在编译的程序的时候出现以下错误:
//error: expected '=', ',', ';', 'asm' or '__attribute__'
查找了半天,发现要包含stdbool.h头文件,原因如下:
在C99中,可以直接使用_Bool表示布尔类型(而我使用的是bool),但不可以直接使用false和true,要自己定义,例如:
#define true 1
#define false 0
在定义了true和false之后才可以直接使用。
头文件stdbool.h中,对布尔类型进行了扩展,增加了关键字bool,而且定义了false和true的宏,所以包含了stdbool.h头文件便可以直接使用bool了
在linux下c语言程序中一般通过int类型来代替bool类型。但是还有一下方法可以使用:
1.可以通过宏定义#define bool int
2.可以定义一个enum类型的变量,例如enum bool{false=0,true=1};
需要注意的是 枚举类型在linux和windows环境下的区别:
enum声明是一样的;
但是enum变量的定义不同,即在linux下必须使用enum enum名称变量名;就算是把枚举类型作为函数返回值类型时也必须这样使用,
在window下除了上述跟linux下一样之外,还可以将enum去掉直接使用,即enum名称变量名称;
枚举变量的赋值、比较不同,即linux下可以直接将枚举变量和整数直接进行比较、赋值等操作,
但是windows下,如果将整数赋值给枚举类型变量时,必须在前面加上强制类型转换,即变量名=(enum名称)整数;
今天在linux下编了一个C程序,用到了bool类型,在编译的程序的时候出现以下错误:
//error: expected '=', ',', ';', 'asm' or '__attribute__'
查找了半天,发现要包含stdbool.h头文件,原因如下:
在C99中,可以直接使用_Bool表示布尔类型(而我使用的是bool),但不可以直接使用false和true,要自己定义,例如:
#define true 1
#define false 0
在定义了true和false之后才可以直接使用。
头文件stdbool.h中,对布尔类型进行了扩展,增加了关键字bool,而且定义了false和true的宏,所以包含了stdbool.h头文件便可以直接使用bool了
