标题: keil函数返回bool类型 [打印本页]

作者: leave323    时间: 2023-5-29 11:03
标题: keil函数返回bool类型
51单片机编程,请问keil里函数怎样写才能返回bool类型的数据?
bool OneWire_Init()//初始化单总线 返回从机的应答信号(0或1)
{
        unsigned char i;
        bool Respond;
        OneWire_DQ=1;
        OneWire_DQ=0;
        i = 247;while (--i);//延时约500us
        OneWire_DQ=1;
        i = 32;while (--i);//延时约70us
        Response=OneWire_DQ;
        return Response;
}

报错信息
OneWire.h(3): error C129: missing ';' before 'OneWire_Init'

作者: 飞云居士    时间: 2023-5-29 13:08
该“bool OneWire_Init()//初始化单总线 返回从机的应答信号(0或1)”行的上一行缺少“;”(分号)
作者: npn    时间: 2023-5-29 13:12
没有bool类型,只有bit类型。
作者: Hephaestus    时间: 2023-5-29 13:28
1)bool是c99标准里面的类型,之前的没有。

2)Keil C51不支持c99标准,永远别想了。

3)RVMDK支持c99,project options里面打开即可。
作者: leave323    时间: 2023-5-29 13:59
飞云居士 发表于 2023-5-29 13:08
该“bool OneWire_Init()//初始化单总线 返回从机的应答信号(0或1)”行的上一行缺少“;”(分号)

虽然报错是这样,但是上一行是有分号的而且是英文分号,我感觉是无法使用bool类型
作者: lkc8210    时间: 2023-5-29 15:20
#define bool bit
作者: yzwzfyz    时间: 2023-5-29 17:28
本帖最后由 yzwzfyz 于 2023-5-30 07:54 编辑

51里允许有256个布尔变量,但不用BOOL这个单词。
参见:关于keil5编译idata数据出错问题
http://www.51hei.com/bbs/dpj-229297-1.html
第9楼,第7条。
作者: 597329015    时间: 2023-5-29 19:40
在Keil中,bool类型需要用stdbool.h头文件定义,确保bool类型能够正常使用。在代码中使用bool类型时,需要引入该头文件并且在函数前面加上bool关键字。您可以尝试将代码修改为以下格式:

#include <stdbool.h>

bool OneWire_Init()//初始化单总线 返回从机的应答信号(0或1)
{
unsigned char i;
bool Respond;
OneWire_DQ=1;
OneWire_DQ=0;
i = 247;while (--i);//延时约500us
OneWire_DQ=1;
i = 32;while (--i);//延时约70us
Response=OneWire_DQ;
return Response;
}

这样就可以返回bool类型的数据了

作者: Hephaestus    时间: 2023-5-29 19:51
597329015 发表于 2023-5-29 19:40
在Keil中,bool类型需要用stdbool.h头文件定义,确保bool类型能够正常使用。在代码中使用bool类型时,需要 ...

分不清RVMDK和C51就别说了,你的说法对于前者是对的,对于后者是完全错误的,楼主第一句话就说明了是后者。
作者: 1812441556    时间: 2023-5-31 10:26
定义无符号整型




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1