Boolean - 优化的bool

时间:2013-02-16 11:31:18

标签: c gcc cross-platform boolean vc6

传统上,C在C99之前没有定义布尔值。因此,搜索头文件以了解创建布尔值的优化方法是:

Windows.h [Microsoft C++]
---------
typedef int                 BOOL;

//false
#ifndef FALSE
    #define FALSE               0
#endif

//true
#ifndef TRUE
   #define TRUE                1
#endif

定义于Tipo Booleano C

#if (__BORLANDC__ <= 0x460) || !defined(__cplusplus)
    typedef enum { false, true } bool;
#endif

由c-faq.com第9节提供

typedef enum {false, true} bool;

在objc.h中,bool定义为:

typedef signed char     BOOL; 
// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" 
// even if -funsigned-char is used.
#define OBJC_BOOL_DEFINED

#define YES             (BOOL)1
#define NO              (BOOL)0

回复stackoverflow.com上的一些问题

typedef enum { False = 0, True = 1 } Bool;
#define bool Bool
#define true True
#define false False

哪一种是优化方式?

1 个答案:

答案 0 :(得分:0)

如果您使用C89,我会使用以下定义:

#define true 1
#define false 0
typedef unsigned char bool;

出于内存原因,_Bool通常是1字节宽的类型。在C99中_Bool是无符号类型。

我个人不喜欢bool的定义作为枚举,因为枚举是实现定义的类型,而枚举常量总是int

现在,如果你想支持速度超过内存,你应该考虑使用与处理器的字大小相匹配的类型。