Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - typedef struct come paramentro di funzione
Forum - C/C++ - typedef struct come paramentro di funzione

Avatar
Steno94 (Normal User)
Rookie


Messaggi: 29
Iscritto: 09/07/2010

Segnala al moderatore
Postato alle 15:29
Giovedì, 08/01/2015
Salve a tutti, dopo diverse ricerche non ho trovato una soluzione adeguata al mio problema quindi ho deciso di chiedere direttamente a voi.
Vorrei semplicemente passare come parametro di una funzione un "typedef struct"...qualcuno può spiegarmi come? Grazie.
Di seguito il codice e gli errori restituiti dal compilatore. Grazie ancora!

Codice sorgente - presumibilmente C++

  1. typedef struct cantiere {
  2.         char cognomeIngegnere[ 30 ];
  3.         char nomeIngegnere[ 30 ];
  4. } t_cantiere;
  5.  
  6. void inserisciDati(t_cantiere c) {
  7.         printf("Congome Ingegnere: ");
  8.         scanf("%s", c.cognomeIngegnere);
  9. }
  10.  
  11. int main(void)
  12. {
  13.         t_cantiere c;
  14.         inseresciDati(c);
  15.         //printf("%s", c.cognomeIngegnere);
  16.         return 0;
  17. }



Compilazione:
gcc -Wall -c "cantiere.c" (nel direttorio: /home/stefano/Scrivania)
cantiere.c: In function ‘main’:
cantiere.c:48:2: warning: implicit declaration of function ‘inseresciDati’ [-Wimplicit-function-declaration]
  inseresciDati(c);
  ^
Compilazione terminata correttamente.



Generazione:
gcc -Wall -o "cantiere" "cantiere.c" (nel direttorio: /home/stefano/Scrivania)
cantiere.c: In function ‘main’:
cantiere.c:48:2: warning: implicit declaration of function ‘inseresciDati’ [-Wimplicit-function-declaration]
  inseresciDati(c);
  ^
/tmp/ccGHQELf.o: nella funzione "main":
cantiere.c:(.text+0x61): riferimento non definito a "inseresciDati"
collect2: error: ld returned 1 exit status
Compilazione fallita.


root@root:~# rm -rf /
PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1454
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 15:45
Giovedì, 08/01/2015
Un metodo si chiama inserisci e l'altro inseresci

PM Quote
Avatar
Steno94 (Normal User)
Rookie


Messaggi: 29
Iscritto: 09/07/2010

Segnala al moderatore
Postato alle 16:01
Giovedì, 08/01/2015
Testo quotato

Postato originariamente da TheDarkJuster:

Un metodo si chiama inserisci e l'altro inseresci



Ho perso ore per una cosa così banale!! Grazie mille!


root@root:~# rm -rf /
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 17:23
Giovedì, 08/01/2015
C'è anche un altro aspetto: il parametro "c" dovrebbe essere passato per indirizzo, se no non modifichi la variabile nel main() ma solo una sua COPIA in inserisciDati() (quella nel main() resta intatta).

Codice sorgente - presumibilmente C++

  1. typedef struct cantiere {
  2.     char cognomeIngegnere[ 30 ];
  3.     char nomeIngegnere[ 30 ];
  4. } t_cantiere;
  5.  
  6. void inserisciDati(t_cantiere *c) {
  7.     printf("Congome Ingegnere: ");
  8.     scanf("%s", c->cognomeIngegnere);
  9. }
  10.  
  11. int main(void)
  12. {
  13.     t_cantiere c;
  14.     inserisciDati(&c);
  15.     printf("%s", c.cognomeIngegnere);
  16.     return 0;
  17. }


PM Quote