Empecé a trabajar con Turbo C 2.01 como un proyecto de hobby. Sí, la versión DOS. Desde que salió en 1987, supongo que no es compatible con C90 ... excepto que sí. Bueno, pedazos. La palabra clave volatile funciona. Y no se admite K&R directo; Probé declaraciones de estilo K&R, pero encontré un error.

Entonces, me preguntaba qué forma de C Turbo C usa. Estoy seguro de que no es estándar, pero parece algo consistente, y dado que este era un compilador muy popular en el pasado, estoy seguro de que hay alguna recopilación de información ... ¿verdad?

0
Orion 10 abr. 2017 a las 10:52

2 respuestas

La mejor respuesta

No había un estándar real en ese entonces, y además MS-DOS tenía sus propias peculiaridades (es decir, el modelo de memoria segmentada y diferentes modelos de memoria de aplicación que los usaban de manera diferente ...).

Así que creo que es seguro decir que Turbo C 2.01 usa el dialecto Turbo C 2.01 de C.

Sobre el soporte de C90, tenga en cuenta que el estándar obviamente hizo todo lo posible para que el código C existente fuera compatible con él. Así que no es sorprendente que Turbo C de 87 pueda construir la mayoría de los programas C90 con cambios mínimos.

8
hyde 10 abr. 2017 a las 08:11

Según wikipedia, la especificación no estándar original de K&R se publicó en 78. El punto de partida del comité ANSI X3J11 que produjo el estándar ANSI C89 es 1983, y el objetivo era

establecer una especificación estándar de C. X3J11 basada en el estándar C en la implementación de Unix.

Esa norma fue adoptada por ISO como C90. Pero como se basó ampliamente en una implementación existente, las extensiones de esta implementación ya fueron portadas en otras implementaciones como la de Borland.

Por lo tanto, no es una verdadera sorpresa que Borland C2.01 de 87 ya incluya la mayoría de las extensiones a K&R C que se han adoptado en la norma solo 2 años después.

4
Serge Ballesta 10 abr. 2017 a las 08:41