Toute ligne qui commence par un #
n'est pas vraiment du C, mais bel et bien une directive
de préprocesseur. Un programme en C est, avant toute chose,
traité par un préprocesseur qui élimine tout ce qui n'est pas les
instructions proprement dites, comme par exemple les commentaires,
les déclarations # include, et en général,
les lignes débutant par #. Vous pouvez
rendre vos programmes en C plus lisibles en définissant des
macros au lieu des valeurs littérales. Par exemple, dans notre programme,
#define START_OF_BUFFER_SIZE 256
|
Chaque fois que vous avez une constante littérale comme 256, vous devriez la remplacer par une macro définie au début du programme.
Vous pouvez aussi vérifier l'existence de macros avec les directives
#ifdef et #ifndef.
En soi, les directives # constituent un
langage de programmation:
/* Set START_BUFFER_SIZE
to fine-tune performance before compiling: */
#define START_BUFFER_SIZE 256 /* #define START_BUFFER_SIZE 128 */ /* #define START_BUFFER_SIZE 1024 */ /* #define START_BUFFER_SIZE 16384 */ #ifndef START_BUFFER_SIZE #error This code did not define START_BUFFER_SIZE. Please edit #endif #if START_BUFFER_SIZE <= 0 #error Wooow START_BUFFER_SIZE must be greater than zero #endif #if START_BUFFER_SIZE < 16 #warning START_BUFFER_SIZE too small, progamme may be inefficient #elif START_BUFFER_SIZE > 65536 #warning START_BUFFER_SIZE too large, programme may be inefficient #else /* START_BUFFER_SIZE is OK, do not report */ #endif void word_dump (char *filename) { < ... > amount_allocated = START_BUFFER_SIZE; q = malloc (amount_allocated); < ... > |