[C] ARRAY IN HEADER .H

di il
2 risposte

[C] ARRAY IN HEADER .H

Salve, vorrei chiedervi delle informazioni sulla formulazione dell'header in un programma..
codice:

//Metodi.h

int nParole (FILE* , int );

void Sort(FILE*,int ,int ,char[][]);                 --------ERRORE

void Nu(FILE* , int ,int , char[][]);                --------ERRORE

int World (char* );

int OttiniEstensione(char*, char);

void Comprimi(char*);

void Decomprimi(char*);


//Metodi.c
int OttieniEstensione(char * filename, char estensione[])
{
	...
}

void Comprimi(char* filename)
{
	...
}
void Decomprimi(char* filename)
{
	...
}
int nParole (FILE* fp, int string_lenght) 
{
        ...
}

void Sort(FILE* input, int nRar,int string_lenght, char lista[nRar][string_lenght] )
{
        ...
}

void Nu(FILE* output, int nRar,int string_lenght, char lista[nRar][string_lenght] )
{
        ...
}

int Worlds (char* percorso) 
{
	...
}



Mi da errore in quelle due righe del .h ...e mi dice " Conflicting types for 'Sort' " "previous declaration of 'Sort' was here.. e la stessa cosa me la da per Nu..
premetto che nRar e string_lenght sono inizializzati...
se nel .h metto char** durante la funzioni mi va a prendere dei valori in memoria errati...
ditemi voi come posso procedere...ciao ciao

2 Risposte

  • Re: [C] ARRAY IN HEADER .H

    Prova ad inserire anche nel prototipo della funzione la dimensione della matrice.

    //nell'header file .h
    void MyFunc(int i,char mat[4][4]);

    //nel .cpp
    void MyFunc(int i,char mat[4][4])
    {

    }
  • Re: [C] ARRAY IN HEADER .H

    Ciao, l'errore "conflicting types" è causato dal fatto che la definizione del prototipo della funzione è diversa da quella dell'implementazione della funzione..
    Ti faccio un esempio specifico per il tuo caso:

    Se definisci una variabile del tipo
    int num[4]
    otterai come risultato un array (statico) che punta a 4 celle di memoria che contengono interi..
    Se invece crei una variabile del tipo
    int num[]
    o
    int * num
    crei un puntatore ad una (o più) celle di memoria (quindi in questo caso non si parla più di array, ma di vettore dinamico)

    Questi due esempi si possono applicare anche alla definizione delle tue funzioni. Nei prototiti, infatti definisci dei puntatori a vettori dinamici, mentre nell'implementazione della funzione definisci degli array statici.. Anche se non ho provato, sono abbastanza sicuro che il problema si risolva se nell'implementazione della funzione passi al puntatore generico (in pratica devi togliere il numero dentro le parentesi quadre).

    Fammi sapere se sei riuscito a risolvere, oppure c'è qualcosa di più complicato.. ciao ciao!!
Devi accedere o registrarti per scrivere nel forum
2 risposte