[STM32F1] STM32 大家是如何定义使用布尔型变量的?

[复制链接]
 楼主| pwppwpw 发表于 2015-6-25 20:51 | 显示全部楼层 |阅读模式
我使用的是3.5版本的固件库。

从msp430移植了个程序过来,发现ST的固件库中根本没有BOOL的定义。难道大家编写函数碰到函数返回值为TRUE or FALSE的情况,都是用int类型的u8来代替BOOL的吗? 这样难道不是浪费了寄存器空间?

有帖子提到可以尝试包含头文件stbool.h来使用bool,这样做会不会产生什么难以预料的问题?

===============================================================
以下附上stdbool.h的源码 或许有点帮助
===============================================================
/* stdbool.h standard header */
#ifndef _STDBOOL
#define _STDBOOL
#ifndef _YVALS
#include <yvals.h>
#endif /* _YVALS */

_C_STD_BEGIN

#define __bool_true_false_are_defined        1

#ifndef __cplusplus
                /* TYPES */

#if 199901L <= __STDC_VERSION__


#else /* 199901L <= __STDC_VERSION__ */
#if __TI_STRICT_ANSI_MODE__
typedef unsigned char _Bool;
#endif
#endif /* 199901L <= __STDC_VERSION__ */

                /* MACROS */
#define bool        _Bool
#define false        0
#define true        1
#endif /* __cplusplus */

_C_STD_END
#endif /* _STDBOOL */

/*
* Copyright (c) 1992-2004 by P.J. Plauger.  ALL RIGHTS RESERVED.
* Consult your license regarding permissions and restrictions.
V4.02:1476 */
=====================================================
=====================================================
mintspring 发表于 2015-6-25 21:16 来自手机 | 显示全部楼层
实际上你可以定义boo,,貌似你已经做对了把
mintspring 发表于 2015-6-25 21:17 来自手机 | 显示全部楼层
实际上都是八位的,只是理论上一位
 楼主| pwppwpw 发表于 2015-6-26 10:30 | 显示全部楼层
mintspring 发表于 2015-6-25 21:17
实际上都是八位的,只是理论上一位

是啊!代码里边这句“typedef unsigned char _Bool;”就说明问题了...
mark0668 发表于 2015-6-26 10:36 | 显示全部楼层
是不支持布尔值的。都是8位
mintspring 发表于 2015-6-27 10:54 | 显示全部楼层
所以布尔类型只是理论上的一种,实际上都是八位的,而且都是非1即是0
diweo 发表于 2015-6-27 16:11 | 显示全部楼层
不存在浪费空间的问题,因为本来就是8位。
即使在C++里面有bool保留字了,也还是8位。
huangqi412 发表于 2015-6-27 21:22 来自手机 | 显示全部楼层
32位机了还搞毛线位变量 敞开用字节变量
598330983 发表于 2015-6-28 00:14 来自手机 | 显示全部楼层
楼主纠结什么?_?随便的用
598330983 发表于 2015-6-28 07:38 来自手机 | 显示全部楼层
不管内部占用多少位,效果是一样一样的
yanemperor 发表于 2017-3-3 16:17 | 显示全部楼层
我不纠结占多少位,纠结怎么取反,转换
xiaoyaozt 发表于 2017-3-3 17:07 | 显示全部楼层
可以定义为char类型,使用1或者0表示
xiaoyaozt 发表于 2017-3-3 17:10 | 显示全部楼层
没有在STM32库中使用bool定义类型变量。
zoomdy 发表于 2017-3-3 21:36 | 显示全部楼层
yanemperor 发表于 2017-3-3 16:17
我不纠结占多少位,纠结怎么取反,转换
  1. _Bool b = true, not;
  2. int i;
  3. not = !b;
  4. i = (int)b;
狼烟客 发表于 2017-3-4 08:55 | 显示全部楼层
typedef union {
  unsigned int WORD;
  struct {
    unsigned int BIT0    :1;
    unsigned int BIT1    :1;
    unsigned int BIT2    :1;
    unsigned int BIT3    :1;
    unsigned int BIT4    :1;
    unsigned int BIT5    :1;
    unsigned int BIT6    :1;
    ... ...
    unsigned int BIT32    :1;
  } BITS;
} BYTEINIT;
这样行不行?8位的单片机是可以的,32我还没试过
狼烟客 发表于 2017-3-4 08:56 | 显示全部楼层
BIT0到BIT31
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

10

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部