Dejte si pozor na nástrahy:
#define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
#define MAX_ERRNO 4095
To zahrnuje -1 až -4095, což představuje kód chyby, nikoli číslo pod 4096, ani NULL (0). Každá hodnota od 0 do 4294963201 (0xfffff001) není považována za chybu. Nepoužívejte ji k pokrytí kontroly NULL.
Pokud chcete vědět, na co se makro rozšiřuje, jednoduše zkompilujte svůj soubor pomocí -E
možnost gcc, která provede pouze předběžné zpracování. Bude obsahovat všechna záhlaví a rozbalí všechna makra.
Makro se samo o sobě „neprovádí“, je to jen věc typu „vyhledat a nahradit“.
Testuje, zda má být dodaný ukazatel považován za chybovou hodnotu .
Nekontroluje, zda je ukazatel platný.
Ve vašem kódu se IS_ERR používá ke kontrole, zda class_create
podařilo vytvořit ebbcharClass
. Pokud dojde k chybě, zrušte registraci ovladače znaku a signalizujte chybu.
MAKRA a inline funkce najdete v err.h