Tenga cuidado con las trampas:
#define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
#define MAX_ERRNO 4095
Esto cubre de -1 a -4095, que representa un código de error, no un número por debajo de 4096, ni NULL (0). Cada valor de 0 a 4294963201 (0xfffff001) se considera que no es un error. No lo use para cubrir la comprobación de NULL.
Si desea saber a qué se expande la macro, simplemente compile su archivo usando el -E
opción de gcc, que solo hará preprocesamiento. Incluirá todos los encabezados y expandirá todas las macros.
La macro no "se ejecuta" per se, es solo un tipo de cosa de "buscar y reemplazar".
Comprueba si el puntero proporcionado debe considerarse un valor de error .
No comprueba si el puntero es válido.
En su código, IS_ERR se usa para verificar si class_create
logró crear ebbcharClass
. Si se produce un error, anule el registro del controlador char y señale el error.
Puede encontrar MACRO y funciones en línea en err.h