L'operatore giusto è ->, e se ti dice che quei campi non ci sono è perché ... non ci sono! Controlla la definizione della sockaddr nella libreria del tuo prof.No no è incluso, cioè non propriamente ma c'è...nel senso che uso una libreria che ci ha dato il prof che cmq è uguale.
Ho provato a mettere il -> e mi da un errore diverso, dice che la sockaddr non ha quei campi suddetti....
[C] Passaggio parametri
-
- Messaggi: 10
- Iscritto il: lunedì 9 gennaio 2012, 14:42
Re: [C] Passaggio parametri
- Malo
- Messaggi: 156
- Iscritto il: sabato 3 dicembre 2011, 14:33
Re: [C] Passaggio parametri
Grazie dei consigli Alessio! Guarda, il file che hai visto è solo una piccola parte insieme ad altri 7, che ho scritto in fretta e furia per levarmi sto progetto della minch.. dalle palle. Come avrai notato ho messo due funzioni all'inizio prima del main e il motivo è che siccome ho un po' di tempo sto facendo proprio il alavoro che tu mi hai consigliato e cioè fare tutte funzioncine da mettere in file diversi. Quelle le ho lasciate lì perchè siccome non compilava almeno le avevo sott'occhio per fare modifiche. Di solito io scrivo di getto tutto il codice che ho in mente (esatto, la carta e gli schemini non esistono ) e poi faccio una fase di restyling del codice. Quindi ti assicuro che metterò funzioni e tutto quanto in un bel .c e .h da richiamare a dovere! :bnf:
Il problema è nato appunto dal fare questa operazione di restyling, nel senso che il codice di quelle 2 funzioni che non compila ora, prima era buttato tale e quale (riga più riga meno) direttamente nel main E lì COMPILAVA! Quindi rispondo a RDA, se nel main compilava e non mi dava l'errore vuol dire che quei parametri ci sono. Ora che li ho buttati in una funzione non riesce evidentemente a passarglieli corretti.
Magari faccio così, stamattina finisco un attimo il primo restyling e lo riposto qui, così se avete tempo mi dite se va meglio.
Graze ancora dell'aiuto!
Il problema è nato appunto dal fare questa operazione di restyling, nel senso che il codice di quelle 2 funzioni che non compila ora, prima era buttato tale e quale (riga più riga meno) direttamente nel main E lì COMPILAVA! Quindi rispondo a RDA, se nel main compilava e non mi dava l'errore vuol dire che quei parametri ci sono. Ora che li ho buttati in una funzione non riesce evidentemente a passarglieli corretti.
Magari faccio così, stamattina finisco un attimo il primo restyling e lo riposto qui, così se avete tempo mi dite se va meglio.
Graze ancora dell'aiuto!
Ecco la mia CONFIGURAZIONE PC:
Alimentatore RASURBO Silent&Power DLP-55.1 - 550 W, CPU AMD Phenom II X4 960T, Mobo ASUSTeK M5A99X EVO, RAM 2x2GB DD3-1333 Corsair, Video ATI HD 6770, HDD Seagate barracuda SATA3 2TB, Case PowerStation Recom, Mouse logitech MX1000, Windows 7 Ultimate, Monitor Samsung LT27A300 27" LED LCD, Audio Dolby digital 5.1 logitech
Alimentatore RASURBO Silent&Power DLP-55.1 - 550 W, CPU AMD Phenom II X4 960T, Mobo ASUSTeK M5A99X EVO, RAM 2x2GB DD3-1333 Corsair, Video ATI HD 6770, HDD Seagate barracuda SATA3 2TB, Case PowerStation Recom, Mouse logitech MX1000, Windows 7 Ultimate, Monitor Samsung LT27A300 27" LED LCD, Audio Dolby digital 5.1 logitech
- Alessio89
- Messaggi: 8098
- Iscritto il: martedì 29 novembre 2011, 23:47
Re: [C] Passaggio parametri
purtroppo so di persona che i prof universitari, quasi tutti, hanno un code-style da licenziamento in tronco: gli spazi sembrano provenire da Marte, le parentesi vengono usate al minimo necessario, i capoverso non esistono, i nomi vengono assegnati a caso, notazione ungherese (che a dire il vero forse il C è ormai l'unico linguaggio in qui la cosa ha un minimo di senso), zero convenzioni su maiuscole e minuscole, variabili globali non costanti, passaggi a riferimento privi di costanti laddove non si deve modificare il valore (in quei casi usano quello schifo di passaggio per valore), la vecchissima regola degli 80 caratteri che pure su un netbook non ha più senso, utilizzo di macro per costanti, zero namespace, zero opaque pointer (cheshire cat per gli amici del C++), niente distruttori virtuali... potrei andare avanti per ore xD
- Malo
- Messaggi: 156
- Iscritto il: sabato 3 dicembre 2011, 14:33
Re: [C] Passaggio parametri
No beh dai io non sono a questi livelli! Almeno i nomi delle var hanno un senso e come spazzi e indentature ci siamo :bnf:
Ecco la mia CONFIGURAZIONE PC:
Alimentatore RASURBO Silent&Power DLP-55.1 - 550 W, CPU AMD Phenom II X4 960T, Mobo ASUSTeK M5A99X EVO, RAM 2x2GB DD3-1333 Corsair, Video ATI HD 6770, HDD Seagate barracuda SATA3 2TB, Case PowerStation Recom, Mouse logitech MX1000, Windows 7 Ultimate, Monitor Samsung LT27A300 27" LED LCD, Audio Dolby digital 5.1 logitech
Alimentatore RASURBO Silent&Power DLP-55.1 - 550 W, CPU AMD Phenom II X4 960T, Mobo ASUSTeK M5A99X EVO, RAM 2x2GB DD3-1333 Corsair, Video ATI HD 6770, HDD Seagate barracuda SATA3 2TB, Case PowerStation Recom, Mouse logitech MX1000, Windows 7 Ultimate, Monitor Samsung LT27A300 27" LED LCD, Audio Dolby digital 5.1 logitech
- dino
- Messaggi: 16580
- Iscritto il: mercoledì 30 novembre 2011, 18:21
Re: [C] Passaggio parametri
Io ho vissuto un caso al contrario. Se avevi scritto un codice perfetto ma anche una sola linea era indentata con lo spazio (tanto per fare un esempio) invece che col tab eri bocciato!Alessio89 ha scritto:purtroppo so di persona che i prof universitari, quasi tutti, hanno un code-style da licenziamento in tronco: gli spazi sembrano provenire da Marte, le parentesi vengono usate al minimo necessario, i capoverso non esistono, i nomi vengono assegnati a caso, notazione ungherese (che a dire il vero forse il C è ormai l'unico linguaggio in qui la cosa ha un minimo di senso), zero convenzioni su maiuscole e minuscole, variabili globali non costanti, passaggi a riferimento privi di costanti laddove non si deve modificare il valore (in quei casi usano quello schifo di passaggio per valore), la vecchissima regola degli 80 caratteri che pure su un netbook non ha più senso, utilizzo di macro per costanti, zero namespace, zero opaque pointer (cheshire cat per gli amici del C++), niente distruttori virtuali... potrei andare avanti per ore xD
_____________________________
Working harder: http://www.dinofratelli.it
Listen House Music: https://www.dinobrosdj.it
Safety online https://omniadpi.it/
Working harder: http://www.dinofratelli.it
Listen House Music: https://www.dinobrosdj.it
Safety online https://omniadpi.it/
- Malo
- Messaggi: 156
- Iscritto il: sabato 3 dicembre 2011, 14:33
Re: [C] Passaggio parametri
Meglio il codice ora? Più di così mi sa che non riesco a tagliare...
Consigli?
Consigli?
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Ecco la mia CONFIGURAZIONE PC:
Alimentatore RASURBO Silent&Power DLP-55.1 - 550 W, CPU AMD Phenom II X4 960T, Mobo ASUSTeK M5A99X EVO, RAM 2x2GB DD3-1333 Corsair, Video ATI HD 6770, HDD Seagate barracuda SATA3 2TB, Case PowerStation Recom, Mouse logitech MX1000, Windows 7 Ultimate, Monitor Samsung LT27A300 27" LED LCD, Audio Dolby digital 5.1 logitech
Alimentatore RASURBO Silent&Power DLP-55.1 - 550 W, CPU AMD Phenom II X4 960T, Mobo ASUSTeK M5A99X EVO, RAM 2x2GB DD3-1333 Corsair, Video ATI HD 6770, HDD Seagate barracuda SATA3 2TB, Case PowerStation Recom, Mouse logitech MX1000, Windows 7 Ultimate, Monitor Samsung LT27A300 27" LED LCD, Audio Dolby digital 5.1 logitech
- Alessio89
- Messaggi: 8098
- Iscritto il: martedì 29 novembre 2011, 23:47
Re: [C] Passaggio parametri
strano, il tab è comodo proprio perché l'ampiezza te la aggiusti tu nel text editor..dino ha scritto:Io ho vissuto un caso al contrario. Se avevi scritto un codice perfetto ma anche una sola linea era indentata con lo spazio (tanto per fare un esempio) invece che col tab eri bocciato!Alessio89 ha scritto:purtroppo so di persona che i prof universitari, quasi tutti, hanno un code-style da licenziamento in tronco: gli spazi sembrano provenire da Marte, le parentesi vengono usate al minimo necessario, i capoverso non esistono, i nomi vengono assegnati a caso, notazione ungherese (che a dire il vero forse il C è ormai l'unico linguaggio in qui la cosa ha un minimo di senso), zero convenzioni su maiuscole e minuscole, variabili globali non costanti, passaggi a riferimento privi di costanti laddove non si deve modificare il valore (in quei casi usano quello schifo di passaggio per valore), la vecchissima regola degli 80 caratteri che pure su un netbook non ha più senso, utilizzo di macro per costanti, zero namespace, zero opaque pointer (cheshire cat per gli amici del C++), niente distruttori virtuali... potrei andare avanti per ore xD
ci darò un'occhiata...Malo ha scritto:Meglio il codice ora? Più di così mi sa che non riesco a tagliare...
Consigli?
update: i problemi di fondo rimangono, perché definisci il dato socket_addr nel proptotipo di funzione? inoltre la struttura chat non è definita nel sorgente delle funzioni ma in quello del main.. una volta definita una struct o una union tu hai un tupo tipo di dato personalizzato con un nome che hai scelto tu e quel nome ne specifica il tipo (nel tuo caso socket_addr, chat ecc..), la keyword "struct" così come "union" non la devi più usare per quel dato altrimenti ne fai un'overloading, per giunta errato (che non ricordo nemmeno se sia permesso in C.. tralasciando che poi col C99 sono cambiate un sacco di cose che non mi sono mai preso la briga di vedere, e idem di più col C11 di qualche mese fa... vabbé tanto nemmeno gcc è un compilatore full c99)
Nelle chiamate di funzione invece tu passi come parametri solo i nomi degli identificatori, non i loro tipi.
- Malo
- Messaggi: 156
- Iscritto il: sabato 3 dicembre 2011, 14:33
Re: [C] Passaggio parametri
Scusate raga ma ho ripreso solo oggi in mano il progetto. Comunque ho risolto!!
Posto la soluzione nel caso ci fossero interessati
L'errore era che cercavo di passare quel dato per riferimento, quando in realtà avrei dovuto passarlo per valore perchè è un puntatore a struttura a quanto ho capito.
Quindi infine abbiamo i prototipi:
e qui di seguito le chiamate:
Ora compila e funziona !
(si ho cambiato i nomi alle funzioni )
Posto la soluzione nel caso ci fossero interessati
L'errore era che cercavo di passare quel dato per riferimento, quando in realtà avrei dovuto passarlo per valore perchè è un puntatore a struttura a quanto ho capito.
Quindi infine abbiamo i prototipi:
Codice: Seleziona tutto
void server_registration_line(char* buff, struct sockaddr_in addr);
int server_registration_file(char* nomefile, struct sockaddr_in ds_addr);
Codice: Seleziona tutto
server_registration_file("indirizzoDS",ds_addr);
server_registration_line(dati,logaddr);
(si ho cambiato i nomi alle funzioni )
Ecco la mia CONFIGURAZIONE PC:
Alimentatore RASURBO Silent&Power DLP-55.1 - 550 W, CPU AMD Phenom II X4 960T, Mobo ASUSTeK M5A99X EVO, RAM 2x2GB DD3-1333 Corsair, Video ATI HD 6770, HDD Seagate barracuda SATA3 2TB, Case PowerStation Recom, Mouse logitech MX1000, Windows 7 Ultimate, Monitor Samsung LT27A300 27" LED LCD, Audio Dolby digital 5.1 logitech
Alimentatore RASURBO Silent&Power DLP-55.1 - 550 W, CPU AMD Phenom II X4 960T, Mobo ASUSTeK M5A99X EVO, RAM 2x2GB DD3-1333 Corsair, Video ATI HD 6770, HDD Seagate barracuda SATA3 2TB, Case PowerStation Recom, Mouse logitech MX1000, Windows 7 Ultimate, Monitor Samsung LT27A300 27" LED LCD, Audio Dolby digital 5.1 logitech