[C] Passaggio parametri

Da JAVA a C# passando per PHP, SQL ed HTML
RDA
Messaggi: 10
Iscritto il: lunedì 9 gennaio 2012, 14:42

Re: [C] Passaggio parametri

Messaggio da RDA »

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....
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.

Avatar utente
Malo
Messaggi: 156
Iscritto il: sabato 3 dicembre 2011, 14:33

Re: [C] Passaggio parametri

Messaggio da Malo »

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 :D ) 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!
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

Immagine

Avatar utente
Alessio89
Messaggi: 8096
Iscritto il: martedì 29 novembre 2011, 23:47

Re: [C] Passaggio parametri

Messaggio da Alessio89 »

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

Avatar utente
Malo
Messaggi: 156
Iscritto il: sabato 3 dicembre 2011, 14:33

Re: [C] Passaggio parametri

Messaggio da Malo »

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

Immagine

Avatar utente
dino
Messaggi: 16580
Iscritto il: mercoledì 30 novembre 2011, 18:21

Re: [C] Passaggio parametri

Messaggio da dino »

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
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!
_____________________________
Working harder: http://www.dinofratelli.it
Listen House Music: https://www.dinobrosdj.it
Safety online https://omniadpi.it/

Avatar utente
Malo
Messaggi: 156
Iscritto il: sabato 3 dicembre 2011, 14:33

Re: [C] Passaggio parametri

Messaggio da Malo »

Meglio il codice ora? Più di così mi sa che non riesco a tagliare...
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

Immagine

Avatar utente
Alessio89
Messaggi: 8096
Iscritto il: martedì 29 novembre 2011, 23:47

Re: [C] Passaggio parametri

Messaggio da Alessio89 »

dino ha scritto:
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
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!
strano, il tab è comodo proprio perché l'ampiezza te la aggiusti tu nel text editor..
Malo ha scritto:Meglio il codice ora? Più di così mi sa che non riesco a tagliare...
Consigli?
ci darò un'occhiata...

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.

Avatar utente
Malo
Messaggi: 156
Iscritto il: sabato 3 dicembre 2011, 14:33

Re: [C] Passaggio parametri

Messaggio da Malo »

Scusate raga ma ho ripreso solo oggi in mano il progetto. Comunque ho risolto!!
Posto la soluzione nel caso ci fossero interessati :p
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);
e qui di seguito le chiamate:

Codice: Seleziona tutto

server_registration_file("indirizzoDS",ds_addr);
server_registration_line(dati,logaddr);
Ora compila e funziona !
(si ho cambiato i nomi alle funzioni :mrgreen: )
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

Immagine

Rispondi