Consideriamo due funzioni:
extern int extern_sqr(int i) { return i * i; }
static int static_dbl(int i) { return i * 2; }
Quindi le persone che fanno riferimento a extern_sqr
faranno riferimento a tale funzione. Questo è in contrasto con il collegamento static
, in cui solo le persone all'interno della "unità di traduzione" (approssimativamente il file è definito) possono accedere alla funzione static_dbl
.
Si scopre che il extern
è implicito per impostazione predefinita in c. Quindi, si otterrebbe lo stesso comportamento, se hai scritto:
int extern_sqr(int i) { return i * i; }
più recente standard C richiedono ancora una "dichiarazione di funzione", così, di solito in un file di intestazione da qualche parte, si incontrano:
int extern_sqr(int i); // Note: 'i' is optional
che dice "da qualche parte, in qualche altra unità di traduzione, ho una funzione chiamata extern_sqr
.
La stessa logica si applica alle variabili.
Scusami, sei nuovo di c? Secondo me, K & R non è un libro introduttivo adatto per i principianti. – yehnan
Tuttavia, fare lo sforzo per capire K & R ti darà una buona conoscenza di C. Dico che tienilo d'occhio. –
Non sono contro la domanda. Ho notato che l'ashma aveva fatto molte domande. Sinceramente desidero che possa usare un libro più appropriato per lui/lei. – yehnan