El uso de una variable antes de la inicialización (o asignación) es una causa grave de errores. No puede verificarlo confiablemente en tiempo de ejecución, pero puede detectarlo durante o antes de la compilación.
Sugiero no para marcarlo dentro del código. Debido a que es probable que cause advertencias del compilador (la 'i' variable se usa antes de que se le haya asignado un valor), introduzca nuevos errores y tenga muy pocas posibilidades de éxito en programas de medianos a grandes.
El mejor método es utilizar herramientas de análisis de código estático (como QA/C o PCLint). Usar el compilador con un alto nivel de sensibilidad de advertencia es una opción gratuita, con mucha menos cobertura que las herramientas especializadas.
Si realiza revisiones de código, también puede incluir una verificación de variables no inicializadas en la lista de verificación. Esto no es garantía, pero generará verificaciones manuales por parte de los revisores.
Si se trata de la verificación del tiempo de ejecución que desea, entonces puede comenzar al inicializar las variables a un valor fuera de rango. Por ejemplo -1 para un valor por lo demás positivo. A continuación, puede comprobar si hay
#define UNASSIGNED_VALUE -1
static int number_of_apples = UNASSIGNED_VALUE;
if (UNASSIGNED_VALUE == number_of_apples)
{
// error handling
}
esto no es un verdadero 'unintialized' variable, pero al menos se puede detectar si se llevaron a cabo las tareas de ejecución en rango legal.
Este hilo tiene alguna discusión sobre esto: http://stackoverflow.com/questions/473236/check-for-value-definedness-in-c – Laserallan