2012-06-07 25 views

Respuesta

7

No!
Las variables globales y estáticas se inicializan implícitamente si su código no lo hace explícitamente como lo exige el estándar C.
En resumen, las variables globales y estáticas nunca se dejan sin inicializar.

+0

Sí por defecto. Quiero que se inicialicen de forma explícita. Cualquier analizador estático también debería estar bien. – Kamath

+0

@AUZKamath: No. Dado que el estándar ya exige que los valores globales sean predeterminados, gcc no proporciona advertencias o diagnósticos para variables globales no inicializadas. –

3

No, porque gcc inicializa automáticamente todas las variables globales y estáticas en "0".

5

6.9.2 definiciones de objetos externos

Semántica

Si la declaración de un identificador para un objeto tiene ámbito de archivo y un inicializador, la declaración es una externa definición para el identificador.

Una declaración de un identificador para un objeto que tiene presentar alcance sin un inicializador, y sin un especificador de clase de almacenamiento o con el especificador de clase de almacenamiento estático, constituye una definición tentativa . Si una unidad de traducción contiene una o más definiciones tentativas para un identificador , y la unidad de traducción no contiene ninguna definición externa para ese identificador, entonces el comportamiento es exactamente como si la unidad de traducción contiene una declaración de alcance de archivo de ese identificador , con el identificador tipo compuesto a partir de finales de la unidad de traducción, con un inicializador igual a 0.

las dos cláusulas anteriores (a partir de la norma) garantizar que file-scope objetos (global) son siempre inicializado.