Comment appeler à nouveau une fonction dans une instruction Case en langage C?

3 Réponses


  • Si j'ai bien compris, vous voulez appeler la fonction à partir de la fonction b mais pas utiliser la méthode normale a() pour appeler. Correct?
    Eh bien, vous pouvez appeler en utilisant un pointeur vers la fonction. Je n'ai pas accès à un compilateur ici mais le code ressemblerait à ceci :
     
    static void a(char message);
    void (*ptr2a)(char) = a;
    vide statique b(void );
    void main( )
    {
     for(int x = 0; x < 2; ++x)
     {
      switch(x)
      {
      case 0 : A((char)"Good Morningn");
       cycle;
       
      cas 1 : B();
       cycle;
      }
     }
    }
    annuler un (message char)
    {
     printf("%s",message);
    }
    void b(void)
    {
     ptr2a((char)"et bonne nuit n");
    }
  • Si vous devez appeler a() en dernier lieu dans le cas 2, vous pouvez d'abord coder votre instruction switch avec le cas 2, puis le cas 1 en dessous. Si vous évitiez ensuite d'appeler break à la fin du code Case 2, l'exécution se poursuivrait dans le code Case 1, appelant ainsi a(). Bien sûr, s'il y avait d'autres cas sous le cas 1, leur code serait également appelé à moins que vous ne mettiez une pause après le a() dans le cas 1. De plus, cela ne fonctionne pas si vous devez faire quelque chose dans le cas 2 après l'appel. une(). C'est aussi un style de codage incroyablement mauvais, mais si, pour certaines raisons, vous vouliez vraiment le faire, c'est peut-être ce dont vous avez besoin.
  • Salut
    Dans mon programme, l'erreur vient comme " Appel à la fonction non définie 'x' dans la fonction main(), quelle est cette erreur ? Veuillez m'expliquer.

Ecrivez votre réponse

Votre réponse apparaîtra après modération