Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16
  1. #11
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Occhio a non confondere il c con il c++,lui l' aveva chiesto in c.
    Anche io se devo utilizzare una struttura la alloco con calloc e malloc,ma lui voleva proprio avere nell ' header file una variabile che quando chiamata contiene un array di NMAX strutture.
    Nell' header file i typedef me li segna come errore pure a me,per questo uso la define.
    Se in un progetto utilizzo la struttura tante volte la includo all' inizio del file,nel mio header ci sono solo le funzioni utili a fini pratici,quelle che uso spesso.
    Conviene sempre usare calloc e malloc e fare come ha detto MacApp per esempio.
    Poi essendoci un array di NMAX elementi anche quelli li allocheri con calloc.

    codice:
    sdati array;
    array=(sdati*)calloc(NMAX,sizeof(sdati));
    I puntatori dimostrano come alla fine avere costanti come NMAX definite non serve a molto,basterà cambiare la variabile inserita nella calloc,che può ad esempio essere una specifica richiesta dell' utente.

  2. #12
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    23
    Originariamente inviato da ramy89
    Occhio a non confondere il c con il c++,lui l' aveva chiesto in c.
    Hai perfettamente ragione, chiedo venia, è il titolo del post che è sbagliato! Per questo è importante che siano gli autori a specificarlo e non i moderatori... (nulla contro i moderatori! )

  3. #13

    salve

    prima di tutto il typedef non è indispensabile in c++per struct , et al posto di dati hai usato sdati .
    dati è il nome del tipo struttura quindi devi scrivere typedef dati vett[NMAX];
    perché sdati non è un nome di tipo ma una variabile di tipo strutturale che è definito prima .ho un italiano scassato ma penso di essere chiaro
    wikileaks

  4. #14
    Originariamente inviato da ramy89
    Occhio a non confondere il c con il c++,lui l' aveva chiesto in c.
    Non mi da errori neppure in C:
    codice:
    /*
    $ gcc --version
    i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646) (dot 1)
    $ gcc -Wall -ansi -pedantic -Wextra -Wconversion main.c
    $ ./a.out 
    main.c
    6
    */
    
    #include <stdio.h>
    
    #define NMAX 3
    
    typedef struct dati {
    int eta;
    char sesso;
    } sdati;
    
    typedef sdati vett[NMAX];
    
    	int ig_test (vett theVett){
    		int ret = 0;
    		int i = 0;
    		for (; i < NMAX; ++i){
    			ret += theVett [i].eta;
    		}
    		return ret;
    	}
    
    
    int main (void){
    	vett aVett={{1, 'M'}, {2, 'M'}, {3, 'M'}};
    	printf ("%s\n", __FILE__);
    	printf ("%d\n", ig_test (aVett));
    	return 0;
    }
    Ma attenzione, non è che io propongo una soluzione del genere, che anzi mi pare orrida; ho solo mostrato che sia in C che in C++ non riesco a riprodurre l'errore segnalato. Perciò potrebbe essere interessante conoscere in modo preciso e completo il codice che ha prodotto l'errore segnalato.

  5. #15
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Un esempio di errore è quando provi a includere il typedef nell' header file e importarlo nel file in cui stai lavorando,forse se sei su linux può non essere così.Io uso mingw32.

  6. #16
    Originariamente inviato da ramy89
    Un esempio di errore è quando provi a includere il typedef nell' header file e importarlo nel file in cui stai lavorando,forse se sei su linux può non essere così.Io uso mingw32.
    Non ho errori neppure così (cmq sto compilando su Mac OS X 10.6.5 Snow Leopard):

    file "sdati.h":
    codice:
    #ifndef SDATI_H
    #define SDATI_H
    
    #ifndef SDATI_H
    #include "sdati.h"
    #endif
    
    #define NMAX 3
    
    typedef struct dati {
    int eta;
    char sesso;
    } sdati;
    
    typedef sdati vett[NMAX];
    
    #endif
    file "main.c":
    codice:
    /*
    $ gcc --version
    i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646) (dot 1)
    $ gcc -Wall -ansi -pedantic -Wextra -Wconversion main.c
    $ ./a.out 
    main.c
    6
    */
    
    #include <stdio.h>
    
    #ifndef SDATI_H
    #include "sdati.h"
    #endif
    
    	int ig_test (vett theVett){
    		int ret = 0;
    		int i = 0;
    		for (; i < NMAX; ++i){
    			ret += theVett [i].eta;
    		}
    		return ret;
    	}
    
    
    int main (void){
    	vett aVett={{1, 'M'}, {2, 'M'}, {3, 'M'}};
    	printf ("%s\n", __FILE__);
    	printf ("%d\n", ig_test (aVett));
    	return 0;
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.