scope errors functions not declared <p>Hi my problem is the following i want to compile my c project and it doesnt work saying that i some of my functions were not declared in scope, but they are and i dont understand why it doesnt compile</p> <p>my code:</p> <p>Header file:</p> <pre><code>#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;time.h&gt; typedef struct s { int id; int tipo_sorte; char descricao[100]; int consequencia; } S; typedef struct sorte{ S s; struct sorte *anterior; struct sorte *proximo; }SORTE; typedef struct t { int id; int n_casa; } T; typedef struct tabuleiro{ T t; struct tabuleiro *anterior; struct tabuleiro *proximo; }TABULEIRO; typedef struct j { int id; char nome[50]; char sigla[5]; int jogadas; } J; typedef struct jogador{ J j; struct jogador *anterior; struct jogador *proximo; }JOGADOR; </code></pre> <p>main file:</p> <pre><code>#include "lista.h" int main() { int opcao=0, a = 0; SORTE *inicio = NULL; JOGADOR *ini = NULL; TABULEIRO *tini = NULL; SORTE *fim = NULL; TABULEIRO *tfim = NULL; JOGADOR *end = NULL; printf(" ----------------------------------------------------------------------------\n" "| Monopolio 2014. |\n" "| Bem-Vindo. |\n" " ----------------------------------------------------------------------------\n"); //carregaPerguntas(&amp;inicio, &amp;fim); //carregaJogadores(&amp;ini, &amp;end); // system("PAUSE"); do{ system("cls"); printf(" -----------------------------------------------------------------------------\n"); printf("| 1 - Jogar |\n"); printf("| 2 - Administrador |\n"); printf("| 3 - Recordes TOP 10 |\n"); printf("| 4 - Sair |\n"); printf(" -----------------------------------------------------------------------------\n\n-&gt;"); fflush(stdin); scanf("%d",&amp;opcao); switch(opcao) { case 1 : system("cls"); // jogar(inicio,fim, &amp;ini, &amp;end); break; case 2 : system("cls"); a = validaLogin(); if(a==0){ menuAdmin(); } if(a==1){ menuAdmin1(&amp;inicio, &amp;fim); }else{ //menuAdmin2(&amp;inicio, &amp;fim); } break; case 3 : system("cls"); // carregaRecordes(&amp;ini, &amp;end); // listaRecordes(ini); break; case 4 : system("cls"); printf(" -----------------------------------------------------------------------------\n"); printf("| Obrigado por ter jogado. |\n"); printf(" -----------------------------------------------------------------------------\n"); system("PAUSE"); default : if(opcao&lt;1 || opcao&gt;4) { system("cls"); printf("Opcao Invalida.\n"); system("PAUSE"); } break; } }while(opcao!=4); // gravaRecordes(ini); system("cls"); return 0; } </code></pre> <p>admin file:</p> <pre><code> #include "lista.h" int validaLogin(){ system("cls"); char pass[20]="", passwd[20]=""; int n_tenta = 3; FILE *fp = fopen("pass.dat","r+b"); if(fp==NULL){ printf("Primeiro Acesso. Por favor defina a password.\n"); fflush(stdin); gets(pass); fclose(fp); fp=fopen("pass.dat","wb"); fwrite(pass,sizeof(pass),1,fp); printf("\n\nPassword definida com sucesso.\n"); system("PAUSE"); fclose(fp); return 0; } do{ fflush(stdin); fread(passwd,sizeof(passwd),1,fp); printf("Introduza a password de acesso ao modo de administracao.\n"); fflush(stdin); gets(pass); if(strcmp(pass,passwd)!=0){ system("cls"); n_tenta--; printf("Password invalida. Restam %d tentativas.\n",n_tenta); if(n_tenta==0){ printf("A sair do modo de administracao.\n"); system("PAUSE"); return -1; } } else{ printf("Password inserida com sucesso.\n"); system("pause"); } }while(strcmp(pass,passwd)!=0); fclose(fp); return 0; } void inserePergunta(SORTE **inicio, SORTE **fim){ SORTE *novo = (SORTE*) malloc(sizeof(SORTE); int gr=0, a=0; if(novo==NULL){ system("cls"); printf("Erro na reserva de memoria.\n"); system("pause"); return; } printf(" -----------------------------------------------------------------------------\n"); printf("| Insira o tipo de consequencia da carta da sorta |\n"); printf(" -----------------------------------------------------------------------------\n"); printf("| 1 - Recuar |\n"); printf("| 2 - Avancar |\n"); printf("| 3 - Saltar |\n"); printf(" -----------------------------------------------------------------------------\n-&gt;"); do{ fflush(stdin); scanf("%d",&amp;gr); if(gr&lt;1 || gr&gt;3){ printf("Opcao errada.\nInsira novamente.\n-&gt;"); } }while(gr&lt;1 || gr&gt;3); novo-&gt;s.tipo_sorte = gr; system("cls"); printf("Insira o tipo da consequencia.\n-&gt;"); fflush(stdin); gets(novo-&gt;s.descricao); if(gr==1 || gr==2 || gr==3){ printf("Insira o numero de casas.\n-&gt;"); fflush(stdin); scanf("%d",&amp;novo-&gt;s.consequencia); } if(*inicio==NULL){ novo-&gt;s.id=1; } else{ novo-&gt;s.id = (*fim)-&gt;s.id + 1; } inserirListaP(novo-&gt;s, &amp;(*inicio), &amp;(*fim)); printf("ID da casa - %d\n",novo-&gt;s.id); system("pause"); } int listaPerguntas(SORTE *inicio){ SORTE *auxi = inicio; char group[50]=""; if(auxi==NULL){ return -1; } while(auxi!=NULL){ if(auxi-&gt;s.tipo_sorte==1){ strcpy(group,"Recuar"); } if(auxi-&gt;s.tipo_sorte==2){ strcpy(group,"Avancar"); } if(auxi-&gt;s.tipo_sorte==3){ strcpy(group,"Saltar"); } printf(" -----------------------------------------------------------------------------\n"); printf("| ID: %d\n",auxi-&gt;s.id); printf("| Carta:\t%s\n",auxi-&gt;s.descricao); printf("| Tipo Carta: %d (%s)\n",auxi-&gt;s.tipo_sorte,group); printf("| Consequencia: %d\n",auxi-&gt;s.consequencia); printf(" -----------------------------------------------------------------------------\n\n"); auxi = auxi-&gt;proximo; } return 1; } void editaPergunta(SORTE *inicio){ system("cls"); SORTE *aux = inicio; int auxi=0, l=0, a=0; l = listaPerguntas(inicio); if(l==-1){ printf(" -----------------------------------------------------------------------------\n"); printf("| Nao existem cartas inseridas para poder alterar.\n"); printf(" -----------------------------------------------------------------------------\n"); system("pause"); return; } printf(" -----------------------------------------------------------------------------\n"); printf("| Insira o id da carta a alterar.\n"); printf(" -----------------------------------------------------------------------------\n-&gt;"); fflush(stdin); scanf("%d",&amp;auxi); while(aux!=NULL){ if(aux-&gt;s.id == auxi) { printf("Edite a carta.\n-&gt;"); fflush(stdin); gets(aux-&gt;s.descricao); printf("Introduza nova consequencia.\n-&gt;"); fflush(stdin); scanf("%d",&amp;aux-&gt;s.consequencia); } printf(" -----------------------------------------------------------------------------\n"); printf("| Dados editados com sucesso.\n"); printf(" -----------------------------------------------------------------------------\n"); system("pause"); return; } else { aux = aux-&gt;proximo; } } printf(" -----------------------------------------------------------------------------\n"); printf("| A carta com o id '%d' nao existe.\n",auxi); printf(" -----------------------------------------------------------------------------\n"); system("pause"); } void eliminaPergunta(SORTE **inicio, SORTE **fim){ SORTE *aux = *inicio; int l=0, i=0; l = listaPerguntas(*inicio); if(l==-1){ printf(" -----------------------------------------------------------------------------\n"); printf("| Nao existem cartas inseridas para poder eliminar.\n"); printf(" -----------------------------------------------------------------------------\n"); system("pause"); return; } printf(" -----------------------------------------------------------------------------\n"); printf("| Insira o id da carta a eliminar.\n-&gt;"); printf(" -----------------------------------------------------------------------------\n"); fflush(stdin); scanf("%d",&amp;i); while(aux!=NULL &amp;&amp; aux-&gt;s.id != i) { aux = aux-&gt;proximo; } if(aux==NULL){ printf(" -----------------------------------------------------------------------------\n"); printf("| A carta com o id '%d' nao existe.\n",i); printf(" -----------------------------------------------------------------------------\n"); system("pause"); return; } if(aux-&gt;anterior==NULL) { *inicio = aux-&gt;proximo; if(*inicio) (*inicio)-&gt;anterior = NULL; } else aux-&gt;anterior-&gt;proximo = aux-&gt;proximo; if(aux-&gt;proximo==NULL) { *fim = aux-&gt;anterior; if(*fim) (*fim)-&gt;proximo=NULL; } else aux-&gt;proximo-&gt;anterior = aux-&gt;anterior; free(aux); printf(" -----------------------------------------------------------------------------\n"); printf("| Carta removida.\n"); printf(" -----------------------------------------------------------------------------\n"); system("pause"); } void menuAdmin(){ system("cls"); system("cls"); printf(" -----------------------------------------------------------------------------\n"); printf("| Menu Administracao. |\n"); printf(" -----------------------------------------------------------------------------\n"); printf("| 1 - Gerir Cartas da sorte |\n"); printf("| 2 - Gerir Tabuleiro |\n"); printf("| 0 - Menu anterior |\n"); printf(" -----------------------------------------------------------------------------\n-&gt;"); } void menuAdmin1(SORTE **inicio, SORTE **fim){ system("cls"); int op=0; do{ system("cls"); printf(" -----------------------------------------------------------------------------\n"); printf("| Menu Administracao. |\n"); printf(" -----------------------------------------------------------------------------\n"); printf("| 1 - Inserir Pergunta |\n"); printf("| 2 - Editar Pergunta |\n"); printf("| 3 - Eliminar pergunta |\n"); printf("| 0 - Menu anterior |\n"); printf(" -----------------------------------------------------------------------------\n-&gt;"); fflush(stdin); scanf("%d",&amp;op); switch(op){ case 1: system("cls"); inserePergunta(&amp;(*inicio), &amp;(*fim)); break; case 2: system("cls"); editaPergunta(*inicio); break; case 3: system("cls"); eliminaPergunta(&amp;(*inicio), &amp;(*fim)); break; default:if(op&lt;0 || op&gt;3){ printf("Opcao errada.\n"); system("PAUSE"); } gravaPerguntas(*inicio); system("PAUSE"); break; } }while(op!=0); } </code></pre> <p>error log:</p> <pre><code>C:\Users\JD\Desktop\Prog\main.c In function 'int main()': 42 41 C:\Users\JD\Desktop\Prog\main.c [Error] 'validaLogin' was not declared in this scope 44 38 C:\Users\JD\Desktop\Prog\main.c [Error] 'menuAdmin' was not declared in this scope 49 35 C:\Users\JD\Desktop\Prog\main.c [Error] 'menuAdmin1' was not declared in this scope 28 C:\Users\JD\Desktop\Prog\Makefile.win recipe for target 'main.o' failed </code></pre> <p>these functions are on admin file i dont understand why this errors please help me</p>