La bool type est défini dans le <stdbool.h> en-tête, et est disponible sous le nom de _Bool autrement (en supposant que vous utilisez un compilateur C99). Si vous n'avez pas C99, vous pouvez toujours inventer votre propre type bool comme ceci:
typedefenum{false,true}bool;
La peine d'emballage cette #if !defined __cplusplus ... #endif pour l'interopérabilité. merci. il fonctionne très bien!
Vous pouvez utiliser définit d'éviter d'utiliser des services de renseignements et de 1s et 0s directement de la logique booléenne.
#define BOOL char#define TRUE 1#define FALSE 0
J'ai choisi char pour BOOL parce que c'est seulement 1 octet au lieu de 4. (Pour la plupart des systèmes)
Il est préférable de faire ce genre de chose avec un enum plutôt que de compter sur le pré-processeur - il est plus robuste et plus c'est mieux pour le débogage (vous obtenez des symboles plutôt que des constantes littérales) - voir @templatetypedef de réponse. Ce genre de bêtises conduit généralement à un code comme if (var == TRUE). Soit utiliser C99 _Bool avec l'opérateur booléen sémantique, ou l'utilisation d'un int et de ne pas écrire une égalité expressions, mais au lieu de simplement if (var) et if (!var). Un autre problème c'est que juste au sujet de chaque bibliothèque tierce-tête que vous pourriez jamais les utiliser, par hasard définit similaires ou identiques macro identificateurs (y compris, par exemple windows.h).
Si vous n'êtes pas à l'aide de C99, et de déterminer ce que vous devez ajouter votre propre type booléen, alors assurez-vous de donner son propre nom.
À l'aide de 'bool' ou 'BOOL' ne vous causer des ennuis lorsque vous incluez une 3ème partie de la bibliothèque.
La seule exception serait d'utiliser le standard de facto de:
#define BOOL int#define TRUE 1#define FALSE 0
Mais assurez-vous enroulez-les dans #ifndef. Mais notez que certaines bibliothèques ne l'utilisation de 'char' comme BOOL.
Si vous venez à partir de C++ fond, demandez-si vous souhaitez interagir avec C++.
La
bool
type est défini dans le<stdbool.h>
en-tête, et est disponible sous le nom de_Bool
autrement (en supposant que vous utilisez un compilateur C99). Si vous n'avez pas C99, vous pouvez toujours inventer votre propre type bool comme ceci:#if !defined __cplusplus
...#endif
pour l'interopérabilité.merci. il fonctionne très bien!
OriginalL'auteur templatetypedef
int
est couramment utilisé comme un Booléen en C, au moins avant le C99. Zéro signifie faux, non-zéro signifie vrai.int checkNumber(void) { return 0; }
serait idiomatiques C.OriginalL'auteur Fred Larson
Vous pouvez utiliser définit d'éviter d'utiliser des services de renseignements et de 1s et 0s directement de la logique booléenne.
J'ai choisi char pour
BOOL
parce que c'est seulement 1 octet au lieu de 4. (Pour la plupart des systèmes)Ce genre de bêtises conduit généralement à un code comme
if (var == TRUE)
. Soit utiliser C99_Bool
avec l'opérateur booléen sémantique, ou l'utilisation d'unint
et de ne pas écrire une égalité expressions, mais au lieu de simplementif (var)
etif (!var)
.Un autre problème c'est que juste au sujet de chaque bibliothèque tierce-tête que vous pourriez jamais les utiliser, par hasard définit similaires ou identiques macro identificateurs (y compris, par exemple windows.h).
OriginalL'auteur jonescb
Si vous n'êtes pas à l'aide de C99, et de déterminer ce que vous devez ajouter votre propre type booléen, alors assurez-vous de donner son propre nom.
À l'aide de 'bool' ou 'BOOL' ne vous causer des ennuis lorsque vous incluez une 3ème partie de la bibliothèque.
La seule exception serait d'utiliser le standard de facto de:
Mais assurez-vous enroulez-les dans #ifndef. Mais notez que certaines bibliothèques ne l'utilisation de 'char' comme BOOL.
Si vous venez à partir de C++ fond, demandez-si vous souhaitez interagir avec C++.
OriginalL'auteur Keith