Как снова вызвать функцию в операторе case на языке C?

3 Ответы


  • Как я понимаю, вы хотите вызывать функцию из функции b, но не использовать для вызова обычный метод a (). Верный?
    Ну, вы могли бы вызвать, используя указатель на функцию. У меня здесь нет доступа к компилятору, но код будет выглядеть примерно так:
     
    static void a (char message);
    void (* ptr2a) (char) = a;
    static void b (пустота);
    void main ()
    {
     for (int x = 0; x <2; ++ x)
     {
      switch (x)
      {
      case 0: A ((char) «Доброе утро»);
       цикл;
       
      случай 1: B ();
       цикл;
      }
     }
    }
    void a (char message)
    {
     printf ("% s", сообщение);
    }
    void b (void)
    {
     ptr2a ((char) "и спокойной ночи n");
    }
  • Если вам нужно вызвать a () в последнюю очередь в случае 2, вы можете сначала закодировать оператор switch с помощью Case 2, а затем Case 1 под ним. Если затем вы избегаете вызова break в конце кода варианта 2, выполнение продолжится в коде варианта 1, вызывая, таким образом, a (). Конечно, если бы были другие случаи ниже Варианта 1, их код также был бы вызван, если вы не поставили перерыв после a () в Варианте 1. Также это не сработает, если вам нужно что-то сделать в Варианте 2 после вызова а (). Это тоже невероятно плохой стиль кодирования, но если по каким-то причинам вы действительно захотели это сделать, это может быть то, что вам нужно.
  • Привет.
    В моей программе ошибка выглядит как «Вызов неопределенной функции 'x' в функции main (), что это за ошибка? Пожалуйста, объясните мне.

Напишите свой ответ

Ваш ответ появится после модерации