Retour sur le préprocessing
Bienvenue dans un nouveau chapitre qui sera une nouvelle fois assez simple
Nous allons tout d'abord commencer par une notion très importante: qu'est-ce que le préprocessing?
Le préprocessing est l'étape où le compilateur remplace les directives de processeurs (d'où son nom).
Vous avez depuis le début croisé des directives de processeur (les includes) et bien en réalité, il y en a d'autres! Nous allons toutes les voir dans ce chapitre (rassurez-vous, il n'y en a qu'à peine 3

).
Le préprocessing intervient donc au début de la compilation. Par exemple, les includes sont remplacés par les fichiers indiqués et le tout rassemblé dans un seul et même fichier.
Avant de commencer, rappelez-vous d'une chose:
N'importe quelle directive de processeur commence obligatoirement par un #!
Voyons maintenant les différentes sortes de directives de processeur.
Include
Les includes permettent d'inclure (nan sans blagues

) des fichiers en plus de celui de base. On s'en sert pour inclure des bibliothèques contenant des fonctions déjà codées (comme math.h, stdlib.h, etc..) ou pour inclure ses propres fichiers grâce à la programmation modulaire, notion expliquée dans le chapitre suivant
Pour rappel, les includes s'utilisent de cette façon:
#include <LeNomDuFichier>
!Attention!
Lorsque le fichier à inclure est situé dans le dossier de votre IDE (c'est-à-dire installé, comme les bibliothèques de base (stdlib, stdio, math, windows, etc..)) il faut encadrer le nom du fichier à inclure de chevrons <> comme vous avez eu l'habitude de le faire depuis le début
Cependant, lorsqu'il s'agit d'un fichier se trouvant dans le dossier de votre projet, il ne se met plus entre chevrons mais entre guillemets "" comme ceci:
#include "LeNomDuFichier"
Attention donc
Je pense qu'il n'est pas trop
nécessaire de s'éterniser sur les includes étant donné que vous savez déjà vous en servir ;)
Voyons donc dès à présent une nouvelle directive de processeur, j'ai nommé ... define!
Define
Define est
extrêmement pratique en programmation! Il permet de remplacer par un mot, une instruction, un nombre, un mot, bref ce que vous voulez!
Prenons un exemple:
#include <stdlib.h>
#include <stdio.h>
#define Dit_Bonjour printf("Hello world!");
int main
()
{
Dit_Bonjour
return 0;
}
Le nom du define doit respecter les mêmes règles que pour les variables et les fonctions!
Remarquez qu'il n'y a pas de point virgule à la fin de Dit_Bonjour car ce n'est pas une instruction mais juste une indication à l'IDE au moment de la compilation
Ce qu'il faut bien comprendre c'est que le Dit_Bonjour est remplacé par print("Hello world!");
Vous avez compris cela, vous avez tout compris
Vous pouvez aussi mettre plusieurs lignes de code dans les defines en procédent comme ceci:
Il suffit de mettre un antislash à la fin de chaque ligne sauf à la dernière

Exemple:
Ce qui, au final, donne bien:
Pensez aussi qu'une define peut très bien être aussi une valeur comme:
#define ValeurPI 3.14159265
Voilà, vous maîtrisez les defines!

Il ne nous reste plus qu'une sorte de directive de processeur à voir, les conditions.
Les conditions existent aussi dans le monde des directives de processeur
Sauf qu'ici elles sont encore plus simples que simples

Elles permettent d'effectuer ou non certaines actions au moment de la compilation du programme. Par exemple (c'est ce que nous allons voir ici) en fonction du système d'exploitation.
Une condition en "langage" préprocesseur se fait comme ceci:
#if condition
//Code à compiler si la condition est vraie.
#elif conditionB
//Sinon si cette condition est vrai, compiler ce code.
#endif //Fin de la condition
Avouez que c'est quand même assez simple
La condition peut-être n'importe quoi, mais c'est souvent la même chose, à savoir: faire une compilation en fonction du système d'exploitation.
Par exemple, si vous souhaitez mettre dans votre code une instruction spécialement pour les ordinateurs Apple, il vous faut écrire cela:
#if __APPLE_
//Instructions, inclusions, bref ce que vous voulez.
#endif
Voilà, j'espère une nouvelle fois avoir été clair
N'hésitez pas à poser une question si vous n'avez pas compris qu'elque chose
Si toutefois vous avez compris, vous m'en voyez ravi et je vous invite à continuer votre apprentissage vers un nouveau chapitre de ce gros tutoriel pour découvrir comment "partitionner" vos fichiers sources, chose bien pratique pour organiser un projet
L'apparition des fonctions La programmation modulaire