¿Por qué puedo usar gets () en gcc -std = c11?

losgets() La función se ha eliminado del lenguaje C. No existe tal función en el estándar.

Sin embargo, compilo el siguiente código:

#include <stdio.h>

int main (void)
{
  (void) gets (NULL);
}

utilizando

gcc -std=c11 -pedantic-errors -Wall -Wextra

y se compila sin dar ningún error o advertencia. Similar,

#include <stdio.h>

int gets;

int main (void)
{}

no se compilará (error: 'obtiene' redeclarado como un tipo diferente de símbolo).

En el estándar 4. Conformidad §6 podemos leer:

Una implementación conforme puede tener extensiones (incluidas funciones de biblioteca adicionales), siempre que no alteren el comportamiento de ningún programa estrictamente conforme

Dado lo anterior, no creo que gcc sea compatible con el estándar, incluso en modo pedante. ¿Hay alguna razón para esto? ¿Es esto intencional o es un error?

GCC versión 4.9.1.

Editar:

gcc --version
gcc (x86_64-win32-seh-rev1, Built by MinGW-W64 project) 4.9.1

Respuestas a la pregunta(3)

Su respuesta a la pregunta