Newsgroup: it.comp.lang.c
Titolo: grossa confusione....

Ciao a tutti,
mi sto avvicinando da pochi giorni al C quasi completamente a digiuno di
ogni tipo d'esperianza alla programmazione (esculo il Basic sul C64...).
I grossi problemi sono nel partire, nel senso che non so come muovermi
nell'accidentato campo di compilatori, librerie e comandi.
ho scaricato un compilatore gratuito dalla rete, LCC che pare funzionare
nonostante le mille finestre wizard che si aprono e che non so
completare. ma questo verra', spero. ho inoltre una copia del K&R. il
fatto e'che non tutti i programmini d'esempio, anche i piu' semplici,
girano. gli errori al momento della compilazione mi suggeriscono
omisioni di comandi, tipo un "return qualcosa" che invece il K&R non
contempla.
inoltre ho a disposizione anche un C++ builder 5 con relativo manuale,
per cui ho cercato di sfruttare i richiami di C per imparare qualcosa. a
questo punto mi sembra di brancolare nel buio..... i progr. del K&R non
girano ne' sull'LCC e nemmeno sul borland, quelli sul manuale borland
non vanno sull'LCC e sullo stesso builder non a dovere (ma forse sono io
che faccio casini). inoltre, nella mia limitatissima esperienza, ho
notato che sul manuale borland si fa riferimento a librerie che non
appaiono sul K&R e che LCC sembra non capire.
insomma, come da oggetto ho un gran casino in testa e non riesco a
muovere i primi delicati passi.
qualcuno puo' chiarirmi le idee?
pensavo che i comandi C fossero standard per ogni compilatore cosi come
le librerie, non e' cosi?
bisogna rispettare una precisa associazione marca compilatore/manuale
relativo/librerie?
mi manco qualcosa di fondamentale?
grazie a tutti da un quasi disperato autodidatta
mirko
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Butta i manuali e affidati al K&R.
Ci possono essere dei refusi di stampa ma non credo ce ne siano anche su
"hallo world" ;)
Prendi il borland visto che ce l'hai e pulisci l'ambiente di sviluppo (nel
senso che se hai un wizard all'inzio fagli creare un ambiente vuoto e
pulito, non cose con vari link già pronti, librerie preinserite ecc...).
Ora affidati al K&R e se un programma non funziona leggitelo tutto e cerca
di capire se ci sono errori.
Un ";" dimenticato o una "}" di troppo fanno casini inimmaginabili: spesso
omettendo uno dei 2 (o mettendone uno di troppo) vengono fuori decine di
errori, mentre l'unico errore REALE risiede appunto in quel carattere omesso
o di troppo.
Se il prog non va cerca di capire dai report del compilatore dov'è l'errore:
parecchi errori sei in grado di capirli.
Non dimenticarti di includere le librerie apposite per le funzioni che vuoi
utilizzare.
Per ultimo se c'è un listato particolare che ti interessa postalo e lo si
guarda :)
Ciao
Claudio

 Claudio
grazie per aver risposto, innanzi tutto.
ti faccio un esmpio stupido.
nel K&R hello world e' battuto come segue:
#include <stdio.h>
main()
{
  printf("hello world\n");
}
Sul compilatore LCC non gira e mi da un mucchio di errori.
grazie ad alcuni tentativi e con l'aiuto del cielo ho scoperto che se
aggiungo un:
return 0
(non compreso nel K&R) prima della graffa di chiusura allora compila ed
esegue.
il mio problema e' proprio questo, sembra ci sia un'apparente 
incopatibilita' tra libro e cio' che il compilatore vuole.
da dove vengono ste differenze? quante altre ce ne sono di questo tipo?
non esiste un unico modo standard di scrivere?
le cose cambiano con distribuzioni diverse?
ancora grazie 


le cose cambiano con distribuzioni diverse?
non č un problema del compilatore
--
Lawrence Oluyede
rhy...@myself.com

>incopatibilita' tra libro e cio' che il compilatore vuole.
Non so se e' un errore dovuto al fatto che e' preansi (anche se quasi
completamente aderente) o se sia una cosa voluta per scopi didattici.
Comunque sul mio DEV-C non da errore se scrivi main senza dargli un
tipo di ritorno (che poi mi vergogni a scrivere una cosa simile e'
un'altro paio di maniche).
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

 completamente aderente) o se sia una cosa voluta per scopi didattici.
Il compilatore *dovrebbe* assumere int come tipo ritornato, quindi
main () {
	/* ... */
}
compila.
+++
Il GCC, senza -Wall, non fiata. Con -Wall partono gli sputi negli
occhi:
wolverine:/tmp$ cat test.c 
#include <stdio.h>
main (int argc, char *argv[]) {
        printf ("Test: %s\n", argv[0]);
}
wolverine:/tmp$ gcc -Wall -o test test.c 
test.c:3: warning: return-type defaults to `int'
test.c: In function `main':
test.c:5: warning: control reaches end of non-void function
Bye,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)           [ 
http://www.radiance.d2g.com/~zefram
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

un'altro paio di maniche).
Strano...se non erro il Dev-C++ è basato su un porting del
GCC e quindi non dovrebbe essere cosi permissivo...non ti
visualizza nemmeno un warning?
--
Lawrence Oluyede
rhy...@myself.com