(Résolu) macro qui incrémente.
Je sèche !!
J'ai inséré dans les 132 lignes d'un switch la macro ligne(0) avec la fonction remplacement de l'éditeur d'Xcode. Puis j'ai remplacé un par un tous les zéro par les nombres de 1 à 132. Cela donne ce que vous voyez ci-dessous. Je suis à la retraite et j'ai le temps, mais j'ai plusieurs switch de ce genre à modifier ! Je pense qu'il doit y avoir une manière d'écrire la macro pour que le préprocesseur fasse le boulot à ma place. Je n'arrive pas à modifier la macro pour que ça marche ! Y a t-il une solution ?
int ltr = pKeySym->sym ;
int lgne = 0 ;
#define KeyTest
#ifdef KeyTest
#define lign(n) lgne=(n);
#define lign(n)
switch (ltr)
{
case SDLK_BACKSPACE: code = 0x0E; lign(1) break;
case SDLK_TAB: code = 0x0F; lign(2) break;
case SDLK_CLEAR: code = 0x47; lign(3) break;
case SDLK_RETURN: code = 0x1C; lign(4) break;
case SDLK_ESCAPE: code = 0x01; lign(5) break;
case SDLK_SPACE: code = 0x39; lign(6) break;
case SDLK_EXCLAIM: code = 0x09; lign(7) break;
case SDLK_QUOTEDBL: code = 0x04; lign(8) break;
.................................................lignes de 9 à 127
case SDLK_RALT: code = 0x38; lign(128) break;
case SDLK_LALT: code = 0x38; lign(129) break;
case SDLK_HELP: code = 0x62; lign(130) break;
case SDLK_PRINT: code = 0x62; lign(131) break;
case SDLK_UNDO: code = 0x61; lign(132) break;
default: code = -1 ;
}
#ifdef KeyTest
if (code==-1)
fprintf(stderr, "input: %c, not known !", ltr);
else
fprintf(stderr, "input: %c, Line %d, code: 0x%x!\n", ltr, lgne, code);
#endif
return code ;
}
Réponses
Tu peux peut être utiliser un tableau de struct. Tu auras directement l'index au moins (et donc la ligne).
Ou éventuellement mettre à profit __LINE__:
En utilisant LINE0 sur la première ligne du swift et LINE sur les autres. Je n'ai pas testé mais j'imagine que cela devrait fonctionner.
ça consisterait à tout réécrire. C'est ce que je cherche à ne pas faire ! les switch existent et je veux modifier les fichiers source pour controler les valeurs utilisées sans mettre de points d'arrêt. Un point d'arrêt c'est bloquant et lent.
Dans ce cas tu peux utiliser __LINE__ ou alors je viens de trouver __COUNTER__ qui correspondrait, je pense, à ce que tu cherches.
oui, c'est prometteur, je vais aller voir ça.
En définitive j'ai utilisé __LINE__ ce qui correspond à ce que je souhaitais.
Merci.
Macron qui incrémente ? Une manière geek de dire qu'il monte dans les sondages ?