dissabte, d’abril 26, 2008

El "C99 mode"

Fent un programet en C (des d'UBUNTU 7.10) i compilant-lo amb el GCC, m'he trobat amb la situació de que es queixava de la declaració "int x" posada dins del bucle, així:
for (int x=0;x<MidaTaulaPrimers;x++)

Per sort el missatge d'error era clar (encara que no català):
Programa.c:63: error: ‘for’ loop initial declaration used outside C99 mode
És a dir... que la "versió" de c que permet fer aquest tipus de declaracions és la C99.
Mirant el "man" del gcc he trobat la manera de dir-li que l'usi; Cal passar-li el paràmetre "-std=c99". (o simplement per el int x fora, però el POST és precissament per explicar que el volia fer a dins :) )


Sembla ser que les versions actuals de GCC (aquesta en concret és la 4.1.3) encara no l'usen per defecte, sinó que usen l'anterior C89, tal i com he trobat explicat a la documentació online de gcc http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Standards.html#Standards :"The default, if no C language dialect options are given, is -std=gnu89; this will change to -std=gnu99 in some future release when the C99 support is complete"