wp_title tag site page get_the_title add_filter windows winapi visual-c++ mfc

windows - site - tag c#



Diferencia BOOL y bool? (3)

En VC ++ tenemos el tipo de datos "BOOL", que puede asumir el valor TRUE o FALSE, y tenemos el tipo de datos "bool", que puede asumir el valor verdadero o falso.

¿Cuál es la diferencia entre ellos y cuándo se debe usar cada tipo de datos?


La API de Windows tenía este tipo antes de que se lanzara bool a C ++. Y es por eso que todavía sale en todas las funciones de Windows que toman BOOL. C no es compatible con bool data-type, por lo tanto, BOOL debe permanecer.


Para agregar a lo que ha dicho luvieere, puede devolver algo que no sea TRUE o FALSE de una función que devuelve un BOOL , por ejemplo,

BOOL myFunc(int a) { if (a < 3) return FALSE; else if (a > 3) return TRUE; else return 2; }

Y esto es posible porque un BOOL es esencialmente un int .

Tenga en cuenta que esto no es aconsejable, ya que destruye severamente la legibilidad general del código, pero es algo que puede encontrar y se preguntará por qué es así.


bool es un tipo de C ++ incorporado, mientras que BOOL es un tipo específico de Microsoft que se define como int . Lo puedes encontrar en windef.h :

typedef int BOOL; #ifndef FALSE #define FALSE 0 #endif #ifndef TRUE #define TRUE 1 #endif

Los valores para bool son true y false , mientras que para BOOL puede usar cualquier valor int , aunque las macros TRUE y FALSE se definen en el encabezado windef.h .

Esto significa que el operador de sizeof arrojará 1 para bool (el estándar establece, sin embargo, que el tamaño de bool está definido por la implementación), y 4 para BOOL .

Fuente: artículo de Codeguru