No, en C++ bool es un tipo de dato primitivo aparte. En C, desde C99 como bien decís, se define mediante macros en stdbool.h, pero es al día de hoy que se sigue definiendo aparte no solo por retrocompatibilidad, también por claridad de código.
_Bool como puse arriba es una palabra reservada por tanto nuevo tipo... y te podes dar cuenta por 2 cosas no se necesita incluir ningun archivo de cabecera (que tenga un typedef, definicion de constante, enumeracion, etc) para poder declarar variables con _Bool y la otra es que las palabras reservadas(luego del estandar) suelen llevar como primer caracter el guion bajo.. al igual que _Complex _Imaginary .. tambien introducidos en C99... bool en stdbool.h si es una macro... no dije que no lo fuera
No esta establecido que sea una mala practica no utilizar NULL. Es simplemente una cuestión de estilo que se suele aplicar mas que nada en código critico donde se requiera dejar bien en claro que se esta tratando con punteros, pero no mas que eso.
Saludos
Si tenes razon, lo dije sin ser demasiado objetivo... en lo personal no me gusta dejar al compilador que haga ese tipo de conversiones (de constantes a punteros) por que hay situaciones en donde el compilador no es capaz de realizar la conversion...Saludos
por ejemplo.. en el paso de un argumento a una funcion que espera un puntero, si la funcion no tiene prototipo el cual no es obligatorio en C, se le esta pasando un int ... en vez de (void *)(0) ...
ademas para mi le da mas legibilidad al codigo...es lo mismo que lo de true o false.. gustos personales