找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3603|回復(fù): 0
收起左側(cè)

STM32用IAR編譯時(shí)FALSE/TRUE與false/true出錯(cuò)

[復(fù)制鏈接]
ID:193947 發(fā)表于 2017-7-29 10:22 | 顯示全部樓層 |閱讀模式
FALSE/TRUE與false/true的區(qū)別
1.FALSE/TRUE與false/true的區(qū)別:
false/true是標(biāo)準(zhǔn)C++語(yǔ)言里新增的關(guān)鍵字,而FALSE/TRUE是通過(guò)#define,這要用途
是解決程序在C與C++中環(huán)境的差異,以下是FALSE/TRUE在windef.h的定義:
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
也就是說(shuō)FALSE/TRUE是int類型,而false/true是bool類型;所以兩者不一樣的,只不過(guò)
我們?cè)谑褂弥袥](méi)有這種感覺(jué),因?yàn)镃++會(huì)幫你做隱式轉(zhuǎn)換。
2.bool的大小與BOOL的區(qū)別:
bool在C++里是占用1字節(jié),而B(niǎo)OOL是int類型,int類型的大小是視具體環(huán)境而定的;所以
來(lái)說(shuō):false/true只占用1個(gè)字節(jié),而TRUE/FALSE視具體環(huán)境而言,以下是BOOL在windef
.h中的定義:typedef int BOOL;
3.NULL與0的區(qū)別:
還是讓我們看一下windef.h中NULL的定義:
#ifndef NULL
#ifdef __cplusplus//這個(gè)是指示是用C++來(lái)編譯程序
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
所以說(shuō):它們沒(méi)有區(qū)別,只不過(guò)在C里面會(huì)做一個(gè)強(qiáng)制類型轉(zhuǎn)換。
BOOL和bool的區(qū)別
一、
1、類型不同
BOOL為int型
bool為布爾型
2、長(zhǎng)度不同
bool只有一個(gè)字節(jié)
BOOL長(zhǎng)度視實(shí)際環(huán)境來(lái)定,一般可認(rèn)為是4個(gè)字節(jié)
3、取值不同
bool取值false和true,是0和1的區(qū)別
BOOL取值FALSE和TRUE,是0和非0的區(qū)別
二:
bool是標(biāo)準(zhǔn)C++數(shù)據(jù)類型,可取值true和false。單獨(dú)占一個(gè)字節(jié),
如果數(shù)個(gè)bool對(duì)象列在一起,可能會(huì)各占一個(gè)bit,這取決于編譯器。

BOOL是微軟定義的typedef int BOOL。與bool不同,它是一個(gè)三值邏輯,
TRUE/FALSE/ERROR,返回值為>0的整數(shù)為T(mén)RUE,0為FALSE,-1為ERROR。
Win32 API中很多返回值為BOOL的函數(shù)都是三值邏輯。比如GetMessage().
三:
大BOOL和小bool之間的區(qū)別:
1、類型不同
BOOL為int型
bool為布爾型
2、長(zhǎng)度不同
bool只有一個(gè)字節(jié)
BOOL長(zhǎng)度視實(shí)際環(huán)境來(lái)定,一般可認(rèn)為是4個(gè)字節(jié)
3、取值不同
bool取值false和true,是0和1的區(qū)別
BOOL取值FALSE和TRUE,是0和非0的區(qū)別
4、例子
bool x=3;  //告警
bool x=1;  //正確
BOOL x=3;  //正確
BOOL x=3.3;  //告警
注:windows為了兼容問(wèn)題定義的基礎(chǔ)變量。
typedef unsigned long        DWORD;
typedef int                  BOOL;
typedef unsigned char        BYTE;
typedef unsigned short      WORD;
typedef float                FLOAT;
typedef FLOAT                *PFLOAT;
typedef BOOL near            *PBOOL;
typedef BOOL far            *LPBOOL;
typedef BYTE near            *PBYTE;
typedef BYTE far            *LPBYTE;
typedef int near            *PINT;
typedef int far              *LPINT;


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表