garslouche
Messages postés583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 2015
-
3 janv. 2005 à 14:31
plus_plus_fab
Messages postés232Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention 8 janvier 2005
-
3 janv. 2005 à 22:40
Salut à tous,
je cherche à écrire une macro qui utiliserait un parmètre qui augmenterait à chaque utilisation. Par exemple si la macro s'appelle AUTO_INDENT
et que j'écris :
int i = AUTO_INDENT;
int j = AUTO_INDENT;
alors i =0 et j =1
et pour compliquer un peu je voudrais que ce nombre soit partagé par tous les fichiers qui incluent cette macro.
Je compte combiner cettre macro avec l'opérateur ## pour que le compilateur crée tout seul des variables numérotées. Par exemple :
int VAR = 100;
int VAR = 200;
et dans un autre fichier
int VAR = 300;
et que de lui-même il traduise ça en
int var0 = 100;
int var1 = 200;
et
int var2 = 300;
Au final peu importe l'ordre dans lequel la numérotation se fait.
Merci
On ne force pas une curiosité, on l'éveille. .................................................Daniel Pennac
Funto66
Messages postés1267Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention28 février 20074 3 janv. 2005 à 21:10
Wow, intéressant mais je doute que ça soit possible en restant dans du C/C++ standard...
Tu peux toujours te créer ton propre préprocesseur ;)
---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
garslouche
Messages postés583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 20151 3 janv. 2005 à 21:30
Bah en fait je viens de repenser à un post que j'avais vu sur la meta-programmation. J'ai bon espoir de m'en sortir.
J'en ferai peut-être une source si je trouve. Ca peut être interessant non ? (quoique pas très réutilisable)
On ne force pas une curiosité, on l'éveille. .................................................Daniel Pennac
plus_plus_fab
Messages postés232Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention 8 janvier 2005 3 janv. 2005 à 22:40
"... et pour compliquer un peu je voudrais que ce nombre soit partagé par tous les fichiers qui incluent cette macro."
Jusque la, ça va.
mais il faut bien se dire que le préprocesseur ne fait aucun calcul. Donc la solution est la variable globale static.
apres, pour demander à ce que le préprocesseur "resolve" VAR en var0,
ce n'est pas possible puisque le calcul du 0 se fait à l'exécution, et
entre le preprocesseur et l'execution, il y a la compilation ...
Les templates C++ n'apporteront rien non plus amha. On peut souvent
résoudre des calculs à la compilation avec les templates, et meme si le
calcul du 0 est résolu à la compilation (et non à l'execution), c'est
encore trop tard.
En fait le 0 doit etre connu avant la compilation, donc ni pendant, ni apres.
comme le dis Funto, Il faut que tu t'écrives un petit préprocesseur de
texte : progamme qui analyserai ton code et transformerai les VAR en
var0...