2012-10-29 12 views
5

Dopo due anni di C#, ho provato C e ho alcuni errori "noob".Identificatore non trovato?

ho cercato di invertire un array con ricorsione, e ho questo errore:

error C3861: 'Rekurzija' indentifer not found

questo è il mio codice:

#include "stdafx.h" 
#include "stdio.h" 

int main() 
{ 
    int niz[] = {1,2,3,4,5,6}; 
    int duzina = sizeof(niz)/sizeof(int); 
    printf("%s",niz[Rekurzija(duzina)]); 
    getchar(); 
} 

int Rekurzija(int niz) 
{ 
    int i = sizeof(niz)/sizeof(int); 
    while(i!=0) 
     return Rekurzija(i-1); 
} 
+1

@irabaxter: hai modificato l'errore nel titolo con un altro errore :) – Wug

+0

@Wug: Glad * qualcuno * sta prestando attenzione. Grazie. –

risposta

5

In C si dovrebbe avere il prototipo di funzione elencati prima della funzione questo lo chiama

così si dovrebbe aggiungere il seguente dopo la vostra include:

int Rekurzija(int niz);

noti che senza avere un prototipo, le cose ancora potrebbe funzionare; il compilatore farà un'ipotesi per il prototipo ma i problemi si presenteranno se l'ipotesi è diversa da quella che è realmente la tua funzione.

6

In C, tutto deve essere dichiarato prima di essere utilizzato. Quindi, è necessario aggiungere una dichiarazione per Rekurzija prima principale:

int Rekurzija(int); 

Questo dice solo al compilatore che quando vede la chiamata Rekurzija tardi, che è una chiamata di funzione di prendere un int e restituisce un int. Questo è tutto ciò di cui ha bisogno per gestire la chiamata, la definizione può essere da qualche altra parte, come sotto main nel tuo caso, o anche in un altro file, come è molto comune (delcaration in un file .h, e definizione in un file .c) .

+0

haha ​​FUNZIONA !!! Grazie ragazzi .. :) – DocNet

+0

Nessun problema. Ricorda di chiudere la domanda quando hai finito (ad esempio per contrassegnare una delle soluzioni). – amaurea

1

In C, è necessario dichiarare le entità prima di fare riferimento a esse.

è necessario aggiungere:

int Rekurzija(int niz); 

per dire al compilatore che Rekurzija esiste, e che tipo di proprietà che ha (ad esempio, si tratta di una funzione con int argomento e risultato) come una dichiarazione "in avanti" precedente la tua funzione principale.

Problemi correlati