Linuxtrent: Re: Domande strane:

  • From: Matteo Ianeselli <m.ianeselli@xxxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Sun, 28 Oct 2001 12:38:39 +0100

Un alieno mutante entrato nel corpo di Mirco Vivaldi ha scritto:

 > 1) se creo un programma vuoto (tipo touch pippo.c) e tento di
 > compilarlo chi mi da l'errore (preprocessore, compilatore, altro)?
 > ed inoltre se provo a farlo mi vengono dati errori sulle librerie
 > del c... che vuol dire????

L'errore te lo da il linker, e se noti il simbolo non risolto e` il
buon vecchio main(), visto che main() viene a sua volta invocato dal
codice di startup (crt?.o).

In altre parole: il kernel nulla sa di main(), e c'e` uno strato che
fa da `colla' tra la tua applicazione e il kernel. 

La `colla' sa come chiedere al kernel i parametri specificati da riga
di comando, e li passa a main(), e sa che deve chiamare la exit() del
kernel con il valore di ritorno di main() (se non vien chiamata da
altri nel frattempo).

Nel C++ la cosa e` ancor piu` evidente, perche` prima di chiamare
main() ci sono anche da invocare tutti i costruttori degli oggetti
istanziati staticamente, e dopo l'uscita da main() e prima della
terminazione occorre invocare anche i distruttori di tali oggetti.

Il linker, quando genera un eseguibile, include normalmente anche
questo codice `colla' tra i file oggetto per produrre un eseguibile,
ma se poi alla colla manca un pezzo (leggi: il main() del tuo
programma), il tutto non sta molto insieme :-)

 > 2) cosa sono i diagrammi di Wirth?

Dovrebbe trattarsi di un modo per rappresentare graficamente delle
grammatiche (bello, ma un po' ingombrante). Qui trovi degli esempi
(per Modula2):

http://www.twu.ca/rsbook/Appendices/Ap2real.html

e sarebbero detti ``di Wirth'' perche` nel libro di N. Wirth che
illustrava il Pascal venivano appunto usati diagrammi di questo tipo
(poi non so se li abbia inventati lui, anche se e` probabile).
-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con SOGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx


Other related posts: