Aller au contenu


Photo

(Résolu) macro qui incrémente.


  • Please log in to reply
6 réponses à ce sujet

#1 tablier

tablier

    Brasseur de pâte à cacao

  • Membre
  • PipPipPipPipPipPipPip
  • 3 090 messages
  • LocationGrenoble et Méaudre (Isère)

Posté 24 avril 2017 - 22:24

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);

#else

#define lign(n)

#endif

 

 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 ;

}

 

"Pourquoi répéter les erreurs passées, lorsqu'il y a tellement de nouvelles erreurs à commettre?" (Bertrand Russel)

J'ai mal à ma France !
mon site: http://cocoa.pod.free.fr


#2 Lexxis

Lexxis

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 404 messages

Posté 24 avril 2017 - 22:36

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__:

#define LINE0 (lign=1, lign0=__LINE__)
#define LINE (lign=__LINE__ - lign0 + 1)

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.



#3 tablier

tablier

    Brasseur de pâte à cacao

  • Membre
  • PipPipPipPipPipPipPip
  • 3 090 messages
  • LocationGrenoble et Méaudre (Isère)

Posté 25 avril 2017 - 07:17

Ç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.


"Pourquoi répéter les erreurs passées, lorsqu'il y a tellement de nouvelles erreurs à commettre?" (Bertrand Russel)

J'ai mal à ma France !
mon site: http://cocoa.pod.free.fr


#4 Lexxis

Lexxis

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 404 messages

Posté 25 avril 2017 - 08:21

Dans ce cas tu peux utiliser __LINE__ ou alors je viens de trouver __COUNTER__ qui correspondrait, je pense, à ce que tu cherches. 



#5 tablier

tablier

    Brasseur de pâte à cacao

  • Membre
  • PipPipPipPipPipPipPip
  • 3 090 messages
  • LocationGrenoble et Méaudre (Isère)

Posté 25 avril 2017 - 10:26

oui, c'est prometteur, je vais aller voir ça.


"Pourquoi répéter les erreurs passées, lorsqu'il y a tellement de nouvelles erreurs à commettre?" (Bertrand Russel)

J'ai mal à ma France !
mon site: http://cocoa.pod.free.fr


#6 tablier

tablier

    Brasseur de pâte à cacao

  • Membre
  • PipPipPipPipPipPipPip
  • 3 090 messages
  • LocationGrenoble et Méaudre (Isère)

Posté 25 avril 2017 - 19:49

En définitive j'ai utilisé __LINE__ ce qui correspond à ce que je souhaitais.

Merci.


"Pourquoi répéter les erreurs passées, lorsqu'il y a tellement de nouvelles erreurs à commettre?" (Bertrand Russel)

J'ai mal à ma France !
mon site: http://cocoa.pod.free.fr


#7 Draken

Draken

    Mouleur de chocolats

  • Artisan chocolatier
  • PipPipPipPipPipPipPipPip
  • 8 599 messages
  • LocationParis

Posté 26 avril 2017 - 14:02

Macron qui incrémente ? Une manière geek de dire qu'il monte dans les sondages ?


Garçon, servez-moi un Covfefe avec du lait de soja, sans OGM ..

Et faites régler la climatisation, il fait bien chaud, ici !

 

 

Éternel Novice !  :baby:

Tueur de poneys !  :(

 

Faire simple .. c'est compliqué !

Faire compliqué .. c'est simple !

 

Un MOOC (cours en ligne - dont je ne suis pas l'auteur) gratuit sur la programmation en Obj-C et en Swift 3, démarrant le 14 Mars 2017 :

https://www.edx.org/...onnex-progios1x

 

Des dizaines d'heures de tutoriels vidéo en français (je ne suis pas l'auteur) pour apprendre à développer en Obj-C et Swift : http://pagesperso-sy...don/5I452-2014/

 

 





0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)