打印
[STM32F1]

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

[复制链接]
20156|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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;”就说明问题了...

使用特权

评论回复
5
mark0668| | 2015-6-26 10:36 | 只看该作者
是不支持布尔值的。都是8位

使用特权

评论回复
6
mintspring| | 2015-6-27 10:54 | 只看该作者
所以布尔类型只是理论上的一种,实际上都是八位的,而且都是非1即是0

使用特权

评论回复
7
diweo| | 2015-6-27 16:11 | 只看该作者
不存在浪费空间的问题,因为本来就是8位。
即使在C++里面有bool保留字了,也还是8位。

使用特权

评论回复
8
huangqi412| | 2015-6-27 21:22 | 只看该作者
32位机了还搞毛线位变量 敞开用字节变量

使用特权

评论回复
9
598330983| | 2015-6-28 00:14 | 只看该作者
楼主纠结什么?_?随便的用

使用特权

评论回复
10
598330983| | 2015-6-28 07:38 | 只看该作者
不管内部占用多少位,效果是一样一样的

使用特权

评论回复
11
yanemperor| | 2017-3-3 16:17 | 只看该作者
我不纠结占多少位,纠结怎么取反,转换

使用特权

评论回复
12
xiaoyaozt| | 2017-3-3 17:07 | 只看该作者
可以定义为char类型,使用1或者0表示

使用特权

评论回复
13
xiaoyaozt| | 2017-3-3 17:10 | 只看该作者
没有在STM32库中使用bool定义类型变量。

使用特权

评论回复
14
zoomdy| | 2017-3-3 21:36 | 只看该作者
yanemperor 发表于 2017-3-3 16:17
我不纠结占多少位,纠结怎么取反,转换
_Bool b = true, not;
int i;
not = !b;
i = (int)b;

使用特权

评论回复
15
狼烟客| | 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我还没试过

使用特权

评论回复
16
狼烟客| | 2017-3-4 08:56 | 只看该作者
BIT0到BIT31

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

10

帖子

0

粉丝