web-dev-qa-db-fra.com

Programmation C, erreur: l'objet appelé n'est pas une fonction ou un pointeur de fonction

J'essaie d'écrire un programme qui implémente les fonctions Pop et Push. Le problème est que j'essaie de passer le pointeur qui pointe vers l'entier Top à la fonction, de sorte que cet entier continue de changer, mais quand j'essaye de compiler j'obtiens toujours cette ligne:

** erreur: l'objet appelé n'est pas une fonction ou un pointeur de fonction (* t) -

#include<stdio.h>
#include<stdlib.h>

#define MAX 10
int Push(int stac[], int *v, int *t)
{
  if((*t) == MAX-1)
  {
      return(0);
  }
  else
  {
      (*t)++;
      stac[*t] = *v;
      return *v;
   }
}

int pop(int stac[], int *t)
{
 int popped;
 if((*t) == -1)
 {
      return(0);
 }
 else
 {
     popped = stac[*t]
     (*t)--;
     return popped;
 } 
}
int main()
{
int stack[MAX];
int value;
int choice;
int decision;
int top;
top = -1;
do{
   printf("Enter 1 to Push the value\n");
   printf("Enter 2 to pop the value\n");
   printf("Enter 3 to exit\n");
   scanf("%d", &choice);
   if(choice == 1)
   {
       printf("Enter the value to be pushed\n");
       scanf("%d", &value);
       decision = Push(stack, &value, &top);
       if(decision == 0)
       { 
           printf("Sorry, but the stack is full\n");  
       }
       else
       {
           printf("The value which is pushed is: %d\n", decision);
       }
   }
   else if(choice == 2)
    {
         decision = pop(stack, &top);
        if(decision == 0)
          {
               printf("The stack is empty\n");
          }
         else
          {
              printf("The value which is popped is: %d\n", decision);
          }

    }
 }while(choice != 3);
 printf("Top is %d\n", top);

}
12
user4222907

Vous avez manqué un point-virgule juste avant cette ligne avec une erreur:

 poped = stac[*t] <----- here
 (*t)--;

La raison de cette étrange erreur est que le compilateur a vu qc comme ça:

 poped = stac[*t](*t)--;

Ce qu'il pourrait interpréter comme un appel à un pointeur de fonction provenant d'une table, mais cela n'a évidemment aucun sens, car stac est un tableau d'entiers, pas un tableau de pointeurs de fonction.

17
Freddie Chopin