Bonjour,
J'aurais besoin pour des raisons d'efficacité de ne pas compiler des parties de code qui ne sont pas utilisées dans certains cas.
Ma première idée a été d'utiliser la compilation conditionnelle ... Mais j'ai rapidement compris que j'allais perdre beaucoup en lisibilité de mon code en mettant des #if #else #endif un peu partout . Ce qui a été confirmé par mes recherches sur le web.
Du coup, je me demande si la solution ne serait pas de toujours de définir des constantes (comme FLAG dans l’exemple ci-dessous) que je passe avec l'option -D du compilateur g++ et de mettre dans mon code quelque chose du genre :
Ma question est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #if FLAG const int TOTO = 1; #else const int TOTO = 0; #endif if (TOTO) cout<<"bonjour tonton"<<endl; else cout<<"bonjour tata"<<endl;
Si FLAG vaut 1, est-ce que l'exécutable obtenu sera peu ou prou le même que si j'avais programmé :
Ainsi dans l'exécutable le test sur TOTO n'est plus fait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #if FLAG const int TOTO = 1; #else const int TOTO = 0; #endif cout<<"bonjour tonton"<<endl;
Cela fonctionne-t-il ? Si non, y a-t-il un moyen de faire cela ?
Je précise que, mon but est de gagner en temps de calcul par l'absence de test qui, se trouvant dans des boucles, sont répétés de très nombreuses fois alors que je sais dès la compilation s'ils ont lieu d'être ou pas. Je précise aussi que je veux garder un seul et unique code pour ne pas avoir plusieurs codes à maintenir en parallèle.
Merci par avance de vos réponses
Partager