le préprocesseur n'est pas du C, c'est un machin inventé pour permettre les inclusions et le trifouillage macroesque, ce n'est pas du code, mais de l'activation conditionnelle de code. des balises HTML en fait.
c'est probablement discutable mais moi j'ai décidé que ça rentrait pas dans les intendations.
sinon c'est illisible. Imagine:
int foo(int bar) {
#ifdef blabla
if(testalakon) {
#endif
trucmuche();
deskilometresdecode();
#ifdef trucmuche
}
#endif
}pourquoi le if est au même niveau que le code qu'il contient?
pourquoi y'a un seul niveau d'imbrication, mais deux tabs de différence entre les accolades fermantes?
Dans un code méga long, tu te dis mais bordel il est où le bloc ouvrant que j'ai oublié de fermer?
alors que
int foo(int bar) {
#ifdef blabla
if(testalakon) {
#endif
trucmuche();
deskilometresdecode();
#ifdef trucmuche
}
#endif
}est bien plus cohérent au niveau de l'indentation des blocs, et on voit très bien que le if () n'est activé que si blabla est défini.