2013-02-16 3 views
0

Традиционно C не имел логического значения, определенного до C99. Таким образом, поиск заголовков файлов знать оптимизированный способ создания булева поиска являются:Boolean - Optimized bool

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 

Какой из оптимизированного путь?

+3

Оптимизирован с точки зрения использования памяти, скорости, портативности, ...? – alk

+0

@alk Да, всячески оптимизирован. – 2013-02-16 11:41:18

+1

Почему у вас есть два профиля? И тот же вопрос от них обоих? – Abhineet

ответ

0

Если вы используете C89, я бы со следующими определениями:

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

По причинам памяти, _Bool обычно широкий тип 1 байт. А в C99 _Bool - неподписанный тип.

Мне лично не нравятся определения bool как перечисление как перечисляемые типы реализации, в то время как константа перечисления всегда int.

Теперь, если вы хотите использовать скорость по памяти, вам следует использовать тип, соответствующий размеру слова вашего процессора.

Смежные вопросы