Punto y coma al final de las sentencias if y funciones en C

Acabo de encontrarme con un código que abusa de los puntos y coma, o uso el punto y coma para diferentes propósitos que no conozco.

Encontré los puntos y coma al final de las sentencias if y al final de las funciones. Por ejemplo:

int main (int argc, char * argv[]) { // some code if (x == NULL) { // some code }; <----- // more code return 0; }; <--- 

Se está comstackndo con cc, no con gcc. ¿Qué hacen esos puntos y comas? Supongo que no hay diferencia porque el comstackdor simplemente lo consideraría como una statement vacía.

Ellos no hacen nada. Son un signo de alguien que no entiende el idioma demasiado bien, sospecho.

Si este es el código fuente que teóricamente “posees”, eliminaría el código y trataría de tener una conversación suave con la persona que lo escribió.

eso es dummy statememt. Su muestra es idéntica a

 if (x == NULL) { // some code do_something_here(); } /* empty (dummy statement) here */ ; // more code some_other_code_here(); 

Tienes razón, el comstackdor los considera declaraciones vacías. No son necesarios, supongo que el progtwigdor de alguna manera pensó que eran.

El primer punto y coma (después de la sentencia if) es solo una expresión vacía que no hace nada. No veo ningún punto de tenerlo allí.

El segundo punto y coma (después de la función) es un error, ya que está fuera de cualquier bloque de código. El comstackdor debe dar una advertencia.

Estos puntos y coma no son necesarios (como usted dijo, son declaraciones vacías). Su código se comstack con gcc, siempre que se defina ‘x’ (consulte http://www.codepad.org ). No hay ninguna razón por la cual un comstackdor de C se rehusaría a comstackr su código.

Creo que el autor puede haber ido por algo como:

 if(condition for tbd block) ; else { //Some code here } 

lo que podrías hacer si fueras un código de andamiaje y todavía quisieras que se comstackra. Sin embargo, hay una buena posibilidad de que sea un error, como sugiere Jon.

Estos puntos y coma son inútiles como otros ya han señalado. Lo único que quiero agregar es que IMO, estos se optimizan de todos modos, es decir, el comstackdor no genera ningún código real para estos.