Knihovna stdbool.h
Standardy jazyka C
V době své největší slávy existoval standard jazyka C s označením c89. Tento standard neznal
booleovské
hodnoty a typy. Proto spousta funkcí, které vracejí informaci pravda/neprava, mají
definovanou návratovou hodnotu jako typ int, viz Boolovské datové typy.
Tím se nenechte zmást a při psaní vlastních funkcí raději používejte bool.
Novější standard c99 zavedl knihovnu <stdbool.h>. Standard c99 toho zavedl nového více. Ne všechno z tohoto standardu už bylo překladači implementováno, ale podpora tohoto standardu je všeobecně na slušné úrovni.
Nejnovější standard jazyka C se nazývá C11. Novinky z tohoto standardu (z roku 2011!) nejsou ještě překladači moc podporovány (já se třeba těším na to, až bude většinou překladačů podporována knihovna <threads.h>, která umožňuje psát více vláknové aplikace).
Booleovské typy a hodnoty
Knihovna <stdbool.h> definuje nový datový typ _Bool.
K němu definuje “alias“ v podobě makra bool.
Doporučuji vám používat spíše toto makro, vypadá přeci jen lépe :).
Datový typ bool může nabývat dvou hodnot definovaných v <stdbool.h>:
true (pravda) a false (nepravda).
Většinou bude _Bool implementován jako int, nebo se bude
přinejmenším automaticky přetypovat int na bool, takže pořád můžete do proměnné
typu bool přiřazovat 1 nebo 0.
Hlavním důvodem zavedení booleovského typu je zvýšení čitelnosti zdrojového kódu.
Příklad jste mohli vidět například v kapitole funkcích s proměnlivým početem argumentů, nebo v příkladu dynamic3.c v kapitole o dynamické alokaci paměti.