#define incremental

garslouche Messages postés 583 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 - 3 janv. 2005 à 14:31
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Derniè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

3 réponses

Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
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/
0
garslouche Messages postés 583 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 1
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
0
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Derniè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...
0
Rejoignez-nous