¿Cuál es la diferencia entre C, C99, ANSI C y GNU C?

Empecé a progtwigr práctica en codechef y me confundí con la diferencia entre C y C99. ¿Qué significa C aquí? ¿Es C89? Verifique los idiomas en la parte inferior de esta presentación . Contiene C y C99.

Encontré en Internet algo llamado GNU C. ¿Hay una C diferente para los sistemas Linux / Unix? ¿Son compatibles con los estándares C de ANSI? También he leído en algunos lugares “C99 estricto”. ¿Que es esto?

¿Hay otros estándares diferentes de C en uso? ¿Hay algo llamado C 4.3.2 o es la versión de gcc en uso actual?

EDITAR:

Esto , Esto , Esto ayudó. Buscaré más y editaré las cosas que quedan sin respuesta.

No soy un novato en progtwigción. Sé lo que es el lenguaje C Sé que existen los diferentes estándares C de ANSI como C89, C99 y C11.

  • Todo antes de la estandarización generalmente se llama “K & R C”, después del famoso libro , con Dennis Ritchie, el inventor del lenguaje C, como uno de los autores. Este fue “el lenguaje C” de 1972-1989.

  • El primer estándar C fue lanzado 1989 a nivel nacional en EE. UU., Por su instituto nacional estándar ANSI. Esta versión se llama C89 o ANSI-C. Desde 1989 hasta 1990, este fue “el lenguaje C”.

  • Un año después, el estándar estadounidense fue aceptado internacionalmente y publicado por ISO (ISO 9899: 1990). Esta versión se llama C90. Técnicamente, es el mismo estándar que C89 / ANSI-C. Formalmente, reemplazó C89 / ANSI-C, haciéndolos obsoletos. Desde 1990 hasta 1999, C90 fue “el lenguaje C”.

    Tenga en cuenta que desde 1989, ANSI no ha tenido nada que ver con el lenguaje C. Los progtwigdores que todavía hablan de “ANSI C” generalmente no tienen ni idea de lo que significa. ISO “posee” el lenguaje C, a través del estándar ISO 9899.

  • En 1999, se revisó el estándar C, cambiaron muchas cosas (ISO 9899: 1999). Esta versión del estándar se llama C99. Desde 1999 hasta 2011, este fue “el lenguaje C”.

  • En 2011, el estándar C se modificó nuevamente (ISO 9899: 2011). Esta versión se llama C11. Se agregaron al lenguaje nuevas características como _Generic , _Static_assert y el soporte de subprocesos. La actualización se enfocó mucho en la secuenciación multinúcleo, multiprocesamiento y expresión. Desde 2011-2017, este fue “el lenguaje C”.

  • En 2017, se revisó C11 y se resolvieron varios informes de defectos. Este estándar en informalmente llamado C17 y fue lanzado como ISO 9899: 2018. No contiene nuevas características, solo correcciones. Es la versión actual del lenguaje C.


“C99 estricto” probablemente se refiere a una configuración del comstackdor obligando a un comstackdor a seguir el estándar por la letra. Hay un término que se ajusta a la implementación en el estándar C. Esencialmente significa: “este comstackdor realmente implementa el lenguaje C correctamente”. Los progtwigs que implementan correctamente el lenguaje C se conocen formalmente como progtwigs estrictamente conformes .

“GNU C” puede significar dos cosas. O el comstackdor de C que viene como parte de la Colección de comstackdores de GNU (GCC). O puede significar la configuración predeterminada no estándar que utiliza el comstackdor C de GCC. Si comstack con gcc program.c entonces no comstack de acuerdo con el estándar C, sino con una configuración GNU no estándar, que puede denominarse “GNU C”. Por ejemplo, todo el kernel de Linux está hecho en GNU C no estándar y no en C.

Si desea comstackr sus progtwigs de acuerdo con el estándar C, debe escribir gcc -std=c99 -pedantic-errors . Reemplace c99 con c11 si su versión de GCC lo admite.

DEBO responder con respecto a ANSI C. Aunque ANSI no ha hecho nada con él, los comstackdores todavía están integrados en él. El comstackdor PIC XC16 por ejemplo: “El comstackdor es un comstackdor completamente validado que cumple con el estándar ANSI C tal como lo define la especificación ANSI (ANSI x3.159-1989) y se describe en Kernighan y The C Programming Language de Ritchie (segunda edición). … “No toda la progtwigción es para computadoras” grandes “como PC. Escribir un comstackdor para los costos de su dispositivo y validar los costos de tiempo y $. ANSI C está vivo y vivo en sus dispositivos integrados / en tiempo real.

  • ANSI C: el primer lenguaje C fue estandarizado por el organismo llamado ANSI en 1989, por eso se llama c89.

  • C99:
    con la demanda de los requisitos de los desarrolladores, en 1999-2000 se han incluido palabras clave y características adicionales o adicionales en C99 (por ejemplo: en línea, booleana … Se han agregado funciones de biblioteca artística en coma flotante)

  • GNU C: GNU es un sistema operativo tipo Unix (www.gnu.org) y en algún lugar el proyecto de GNU necesita un lenguaje de progtwigción C basado en el estándar ANSI C. GNU usa el comstackdor GCC (Colección comstackdora GNU) para comstackr el código. Tiene una función de biblioteca C que define llamadas al sistema tales como malloc, calloc, exit … etc.

ANSI C es un estándar que está siendo utilizado o evaluado por los otros estándares.

Además de Lundin Respuesta

Esto es lo que Dennis Richie tiene que decir cuando se le preguntó

“¿Por qué K & R no esperó a la norma final ANSI aprobada antes de escribir K & R 2nd edition?”

¿Por qué K & R no esperó a la norma final ANSI aprobada antes de escribir K & R 2nd edition? Parece que este libro será el estándar correcto durante unos meses antes de que sea superado por el estándar ANSI final. Sé que es probable que se produzcan pocos cambios importantes en esta etapa tardía, pero ¿por qué no esperar unos meses y asegurarse de obtener el 100% correcto, en lugar de tener que escribir casi de inmediato una tercera edición o quedar obsoleto?

Pensamos que sería bueno celebrar el décimo aniversario de la primera edición. Más en serio, comenzamos a trabajar el verano pasado porque teníamos el tiempo y la inclinación, y parecía que X3J11 se acercaba a su fin. En diciembre y enero, cuando estábamos terminando, consideramos si la posibilidad de cambios importantes justificaba postergar la entrega, y (después de discutir el asunto con el editor) decidieron que no valía la pena esperar. PH lo quería, y tanto Brian como yo queríamos que fuera de nuestras agendas.

Incluso si hay cambios en el estándar, es difícil imaginar que sean lo suficientemente extensos como para garantizar una nueva edición. (Incluso estuvimos preparados para hacer frente de alguna manera con noalias, si hubiera durado). Estamos listos para hacer los cambios necesarios en una futura impresión, pero hay motivos para esperar que sean menores. Los miembros de X3J11 están ansiosos por terminar sin sorprender a la gente, también; muchos de ellos trabajan para compañías que están preparando comstackdores ANSI, después de todo.

Dennis Ritchie

Esta pregunta no se buscó exhaustivamente en la red para la respuesta, de todos modos, puede ver esto:

  1. C es un lenguaje de progtwigción de propósito general desarrollado inicialmente por Dennis Ritchie entre 1969 y 1973 en AT & T Bell Labs.
  2. C99 es un estándar del lenguaje C publicado por ISO y adoptado por ANSI en alrededor de 1999.
  3. GNU C es solo una extensión de c89, mientras que algunas características de c99 también se agregan, pero en su totalidad es diferente del estándar c99, así que cuando comstackmos en gcc tenemos que ingresar -std=c99 que ya se mencionó en las otras respuestas.
  4. ANSI C es una serie sucesiva de estándares lanzados por ANSI.