Sto leggendo "The Standard C Library" di PJ Plauger, il che è davvero interessante. Il libro spiega non solo come USARE la biblioteca ma anche come viene implementata.
Ho finito di leggere la ctype.h
sezione e nell'intestazione le funzioni sono dichiarate sia come macro che come funzioni. Per esempio
int isdigit(int);
ma anche
#define isdigit(c) (_Ctype[(int)(c)] & _DI)
Non capisco perché ENTRAMBI vengono utilizzati?
Inoltre, se provo a ricreare la mia ctype
intestazione e l'implementazione personalizzate, posso compilare correttamente solo se rimuovo la macro (commentando la definizione).
Questo aspetto non è stato veramente spiegato nel libro. Qualcuno può spiegare per favore?