2010-11-30 5 views
8

Oigo con frecuencia que Objective-C es un "superconjunto estricto" del lenguaje de programación C. Hay varios dialectos/estándares de C (es decir, K & R, ANSI C, C90, C99, extensiones de GNU ...); Objective-C se desarrolló por primera vez a principios de la década de 1980, por lo que debe preceder estos estándares. Sin embargo, Objective-C 2.0 es de alrededor de 2006 o 2007, por lo que podría basarse en un dialecto C más moderno. Entonces, ¿cuál "C" es el superconjunto Objective-C a?¿Qué dialecto de C es Objective-C un "superconjunto estricto" de?

Respuesta

7

Hay una correspondiente "dialecto" de Objective-C para todos los dialectos estándar de C.

+0

+1 por ponerlo mejor que yo :) –

+2

'@Chuck:' ... y algunos de los * dialectos * no estándar * de C! –

1

Lo que está buscando no está muy definida. El objetivo C generalmente se piensa en un superconjunto estricto de ANSI-C (que es lo mismo que C90). Sin embargo, Objective C no es un lenguaje estandarizado ni nada por el estilo. Su descripción es básicamente "tomar C y agregarle estas características". Por lo tanto, depende del compilador particular que esté utilizando.

+0

Ahora tengo que preguntarme cómo Xcode trata con las estrictas reglas de aliasing C99 al compilar el código Objective-C ... –

+0

@iPhone Developer: nunca he usado Xcode, pero iirc está basado en alguna forma de GCC. Si ese es el caso, entonces debería apoyar cualquiera de los estándares de C subyacentes al objetivo C mismo. –

+0

'@Billy ONeal:' De hecho: http://lists.apple.com/archives/objc-language/2005/Aug/msg00050.html –

2

Dado que los compiladores de Objective-C utilizados más comúnmente (GCC y Clang) también son compiladores de C, uno imaginaría que son compatibles con el (los) dialecto (s) C soportados por estos compiladores. documentación de Apple establece específicamente:

Los compiladores de Apple se basan en los compiladores de la colección de compiladores de GNU. La sintaxis de Objective-C es un superconjunto de sintaxis GNU C/C++, y el compilador Objective-C funciona para C, C++ y Código fuente Objective-C. El compilador reconoce archivos de origen de Objective-C por la extensión de nombre de archivo .m, del mismo modo que reconoce los archivos que contienen sólo sintaxis estándar de C por nombre de archivo extensión .c. Del mismo modo, el compilador reconoce los archivos C++ que usan Objective-C por la extensión .mm. Otros problemas al utilizar Objective-C con C++ están cubiertos en “Uso de C++ Con Objective-C”

Así que en este caso Objective-C es simplemente considerados como una extensión de cualquiera de los C o C++ compilador dependiendo en el que elige como idioma base.

+0

A partir de Xcode 4.4, el dialecto C parece estar configurado en "GNU99" de manera predeterminada. – zoom23

0

Según "Learning Objective-C" de Apple:

"Objective-C es un superconjunto de la versión ANSI del lenguaje de programación C y soporta la misma sintaxis básica como C."

Cuestiones relacionadas