¿Qué es la “casi inicialización”?

En C, ¿qué significa un error de “casi inicialización”?

Por ejemplo, lo siguiente generará el error:

int a[9] = {{1,2,3},{2,3,4},{3,4,5}} 

ps ¿Por qué este ejemplo genera el error?

Para combinar los comentarios de my y @ luk32 (edit: y @ hans-passant).

Su error no es tanto un error, ya que es una advertencia de que tiene un problema potencial. Está cerca (como en, cerca de) el elemento a (no hay un guión entre “cerca” e “inicialización”, por lo que la advertencia está cerca del elemento mencionado en el mensaje de advertencia; una “casi inicialización” significaría que El elemento estaba casi pero no completamente inicializado, lo cual no tiene sentido).

 int a[9] = {{1,2,3},{2,3,4},{3,4,5}} 

Básicamente, tiene una matriz 1D de tamaño 9. Pero en su inicialización, la está tratando como una matriz 2D 3×3. Mientras ocupan la misma cantidad de espacio en la memoria, son tratados de manera un poco diferente.

Para resolver el problema, tendría que cambiar la definición:

 int a[3][3] = {{1,2,3},{2,3,4},{3,4,5}} 

O la inicialización:

 int a[9] = {1,2,3,2,3,4,3,4,5} 

Enlace informativo:

Proporcionado por @ luk32: http://www.microchip.com/forums/m463491.aspx