apatriarca ha scritto:No, non c'è una svista. Semplicemente non mi riferivo alla riga subito precedente ma a main() senza int. Nei nuovi standard non è più permessa la dichiarazione di una funzione senza specificare il tipo di ritorno.
ah ok, così ha più senso.
Con static storage duration intendo semplicemente riferirmi a variabili che sono globali o specificate come static all'interno di una funzione e che quindi esistono per tutta la durata dell'esecuzione del programma. Che siano specificati nel selettore BSS nello standard ELF non ha niente a che fare con lo standard C. Lo standard C non è legato neanche lontanamente a ELF. Nei casi che ho specificato, lo standard C afferma che, se la variabile non è inizializzata, allora è inizializzata con "zero" (l'equivalente di zero nei vari tipi). Per azzerare quindi un array globale o dichiarato come statico all'interno di una funzione non è necessario scrivere codice. Se invece la variabile è locale, se non è inizializzata, può avere qualsiasi valore.
Sì certo sono standard diversi. Ma più mi riferivo al comportamento ("semantico"), le variabili inserite nel segmento BSS sono garantite essere inizializzate, ma hai ragione a differenziare.




