0

従来、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

最適化された方法はどれですか?

4

1 に答える 1

0

C89を使用する場合は、次の定義を使用します。

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

メモリ上の理由から、_Bool通常は1バイト幅のタイプです。そしてC99では_Bool符号なしタイプです。

個人的にはbool、列挙型は実装定義型であるのに対し、列挙型定数は常にであるため、列挙型としての定義は好きではありませんint

ここで、メモリよりも速度を優先したい場合は、プロセッサのワードサイズに一致するタイプの使用を検討する必要があります。

于 2013-02-16T11:36:59.623 に答える