2012-06-07 21 views

risposta

7

No!
Le variabili globali e statiche vengono inizializzate in modo implicito se il codice non lo esegue esplicitamente come richiesto dallo standard C.
In breve, le variabili globali e statiche non vengono mai lasciate non inizializzate.

+0

Sì per impostazione predefinita. Voglio che siano inizializzati in modo esplicito. Qualsiasi analizzatore statico dovrebbe anche andare bene. – Kamath

+0

@AUZKamath: No. Poiché lo standard richiede già che vars globali siano inizializzate, gcc non fornisce avvisi o diagnostica per le vars globali non inizializzate. –

3

No, perché gcc inizializza automaticamente tutte le variabili globali e statiche a "0".

5

6.9.2 definizioni di oggetti esterni

Semantica

Se la dichiarazione di un identificatore per un oggetto ha una portata di file e un inizializzatore, la dichiarazione è un esterno definizione per l'identificatore.

Una dichiarazione di un identificatore per un oggetto che ha presentare portata senza un inizializzatore, e senza specificatore della classe di archiviazione o con l'identificatore della classe di archiviazione statica, costituisce un tentativo di definizione . Se un'unità traduzione contiene una o più definizioni indicative per un identificatore , e l'unità di traduzione non contiene definizione esterna per questo identificatore, allora il comportamento è esattamente come se l'unità traduzione contiene una dichiarazione ambito di file di tale identificatore, con la tipo composito a partire dalla fine della unità di traduzione, con un inizializzatore uguale a 0.

quanto sopra due clausole (dallo standard) garantisce che il file-scope oggetti (globali) vengono sempre inizializzate.

Problemi correlati