-2
votes

Macro pour la boucle avec l'appel de fonction différé

Je voudrais construire une macro dans laquelle une fonction prédéfinie (ici simulée par "Call FCN ici") est appelée à chaque fois que la boucle se termine une itération. C'est ce que j'ai jusqu'à présent, qui fonctionne réellement.

Y a-t-il une manière plus courte, éventuellement avec plus de Macro Magic pour écrire un tel comportement? P>

MYWHILE(true){

  bool b = foo();
  if(b){
    break;
  }
}


4 commentaires

N'utilisez plus de macros de préprocesseur, ils sont surtout plus nuisibles que utiles


Mettez ce code dans une fonction au lieu d'une macro.


Pourquoi n'utilisez-vous pas simplement un do {} pendant que boucle, ce qui fait exactement le comportement que vous avez décrit? (Bien que ce ne soit pas le comportement que vous avez dans votre code. Lequel êtes-vous voulu?)


Sur la deuxième et la deuxième fois, l'exécution d'époque pénètre dans votre boucle, votre implémentation appellera la fonction prédéfinie la première fois à travers car la statique bool sera déjà définie sur true de la boucle précédente.


3 Réponses :


0
votes

Je voudrais construire une macro où une fonction prédéfinie (ici simulé par "appeler fcn ici") est appelé à chaque fois que la boucle se termine une itération, mais pas à la première fois.

Depuis votre code fourni et votre conflit de questions, il n'est pas clair quel comportement vous voulez. Pour implémenter ce qui précède, je vous recommanderais de ne pas utiliser de macros du tout et simplement d'écrire votre code comme: xxx


4 commentaires

Ou le plus simple pour (; condition; fcn ())


Désolé pour la description déroutante. La fonction doit être appelée après la première itération. Je veux dire au début de la deuxième itération qui est en fait la même chose.


@ 1201ProgramAlarm c'est ce que je cherchais.


@ 1201Programalarm: True, je suppose que je suppose que sa fonction devait faire partie de la condition. Un pour boucle WOUD ne le permet pas.



0
votes

plutôt qu'un compliqué pendant la boucle , vous pouvez emballer ce dont vous avez besoin dans un pour boucle: xxx

la fonction sera appelé à la fin de chaque itération, avant de réévaluer la condition.


0 commentaires

0
votes

Qu'est-ce qui ne va pas avec juste: xxx

qui est logiquement équivalent à: xxx

encore plus simple que: < Pré> xxx


0 commentaires