const, structures conditionnelles et comportement du compilateur ?
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 :
Code:
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; |
Ma question est la suivante :
Si FLAG vaut 1, est-ce que l'exécutable obtenu sera peu ou prou le même que si j'avais programmé :
Code:
1 2 3 4 5 6 7
|
#if FLAG
const int TOTO = 1;
#else
const int TOTO = 0;
#endif
cout<<"bonjour tonton"<<endl; |
Ainsi dans l'exécutable le test sur TOTO n'est plus fait.
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