Semicolon al final de sentencias if y funciones en C

Acabo de encontrar algún código que usa en exceso los puntos y coma, o uso el punto y coma para diferentes propósitos que no conozco.

Encontré punto y coma al final de las declaraciones 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á compilando con cc, no con gcc. ¿Qué hacen esos punto y coma? Supongo que no hay diferencia porque el compilador solo lo consideraría como una declaración vacía.

Respuestas a la pregunta(14)

Su respuesta a la pregunta