Tengo un programa muy grande que compila con gcc sin advertencias¿Hay alguna manera de permitir for (int i = 0;. ... en gcc sin tener que activar el modo C99
Si giro en el modo c99 c99 = --std en la línea de comandos, se da un gran número de avisos y errores.
pero me encanta el idioma for(int i=0; i<20; i++){ code }
en lugar de {int i; for (i=0; i<20; i++){ code }}
¿hay alguna manera de ¿decirle a gcc que permita esto y solo esto?
Como alternativa, ¿hay alguna forma de habilitar el modo c99 en las funciones particulares en las que estoy trabajando? Algo así como
#pragma c99 on
for(int i=0; i<99; i++)
{
code
}
#pragma c99 off
ANSI C prohíbe la mezcla de declaración y declaraciones por una razón . Deberías declarar todas tus variables en la parte superior de tu función y eso es todo. Si tiene miedo de perderlos o mezclarlos, su función tiene demasiadas líneas y debe segmentarla. – Eregrith
¿Qué sucede cuando intenta compilar su código en el modo 'gnu99' (en lugar de' c99')? – NPE
Este comentario significa "votar en contra" de Eregrith's. Hay buenas razones por las cuales C89 le permite definir variables en la parte superior de * cualquier * bloque, no solo un cuerpo de función como exige la guía de estilo de Eregrith. También hay buenas razones por las que algunos otros idiomas, y muy pocos idiomas modernos, tienen ese requisito. No sigas el estilo de Eregrith, incluso en C89. La razón por la cual C89 prohibió la combinación de definiciones y otras declaraciones es bastante débil: fue en gran parte histórica en 1989, y tenía que ver con viejos compiladores pesados que establecían estructuras de pila de una manera bastante simple. –