Boa noite,
 
	Estou precisando de uma ajuda ai galera, preciso fazer uma lista sequencial, e está dando erro na minha função empilhar, estou usando codeblocks, se alguém puder me ajudar agradeço.
 
	 
 
	#include <stdio.h> 
	#define TRUE 1 
	#define FALSE 0 
	#define MAX 50
 
	typedef struct { 
	    int conteudo; 
	} Dados;
 
	typedef struct { 
	    Dados dados[MAX]; 
	    int topo; 
	    int base; 
	    int lim; 
	} Pilha;
 
	Pilha pilha; 
	Dados dados;
 
	void inicializar(Pilha pilha); 
	int estaVazia(Pilha pilha); 
	void empilhar(Pilha pilha, Dados dados);
 
	 
	int main() {
 
	    int num; 
	    inicializar(pilha); 
	    do { 
	        printf("\n1 - Inserir novo nodo  \n2 - Remover nodo  \n3 - Consultar nodo  \n4 - Alterar nodo  \n5 - Destruir pilha  \n0 - Sair \n"); 
	        scanf("%d", &num);
 
	        switch (num) { 
	            case 1: 
	            { 
	                int val; 
	                printf("\nInforme o valor:"); 
	                scanf("%d", &val); 
	                dados.conteudo = val; 
	                empilhar(pilha, dados); 
	                break; 
	            } 
	            /* 
	            case 2: 
	            { 
	                lst_imprime(m); 
	                break; 
	            }
 
	            case 3: 
	            { 
	                int aux; 
	                mercado* mer; 
	                printf("\nQual codigo deseja buscar?\n"); 
	                scanf("%d", &aux); 
	                mer = busca(m, aux); 
	                printf("\nCodigo = %d  Valor = %0.2f  Nome do produto: = %s\n", mer->codigo, mer->valor, mer->produto); 
	                break; 
	            }
 
	            case 4: 
	            { 
	                int aux; 
	                printf("\nDeseja retirar qual codigo?\n"); 
	                scanf("%d", &aux); 
	                m = lst_retira(m, aux); 
	                break; 
	            }
 
	            case 5: 
	            { 
	                m = lst_libera(m); 
	                break; 
	            }*/
 
	        } 
	    } while (num != 0);
 
	    return 0; 
	}
 
	void inicializar(Pilha pilha) { 
	    pilha.base = 0; 
	    pilha.topo = pilha.base - 1; 
	    pilha.lim = MAX; 
	}
 
	int estaVazia(Pilha pilha) { 
	    if (pilha.topo == NULL) 
	        return TRUE; 
	    else 
	        return FALSE; 
	}
 
	void empilhar(Pilha pilha, Dados dados) { 
	       if (pilha.topo < pilha.lim) { 
	        pilha.topo = pilha.topo + 1; 
	        pilha[pilha.topo] = dados; 
	    } 
	    else 
	        printf("Pilha esta cheia!"); 
	}
 
	/* 
	int desempilhar(TipoPilha *pilha) { 
	    TipoNodo *nodo_que_sai_topo; 
	    int valor_nodo_que_sai_topo;
 
	    if (estaVazia(pilha)) { 
	        printf("Lista Vazia !!!"); 
	        return 0; 
	    } else { 
	        nodo_que_sai_topo = pilha->topo; 
	        pilha->topo = nodo_que_sai_topo->link;
 
	        valor_nodo_que_sai_topo = nodo_que_sai_topo->conteudo;
 
	        free(nodo_que_sai_topo); 
	        pilha->tam--; 
	        return valor_nodo_que_sai_topo; 
	    } 
	}
 
	int imprimir(TipoPilha *pilha) { 
	    TipoNodo *paux; 
	    paux = pilha->topo; 
	    printf("PILHA ATUAL\n"); 
	    while (paux) { 
	        printf("%d\n", paux->conteudo); 
	        paux = paux->link; 
	    } 
	} 
	*/