2012-05-22 7 views
13

Soy muy interrogativo y perplejo por this commit on android's dalvik platform empujado hace un año.Ventajas de compilar el código C con el front-end C++ de gcc

Las extensiones de archivo se cambiaron a extensiones de C++ para "mover el intérprete a C++": use el front-end de C++ del compilador.

¿Cuáles podrían ser los beneficios de este cambio? Dalvik Platform es un proyecto 100% C & asm y no se utiliza ninguna característica C++.

+2

C++ tiene una seguridad de tipo mejor/más estricta y una convención de llamadas diferente (¿más eficiente?) –

Respuesta

3

Solo puedo especular, pero considerando cómo el sistema Android ha crecido en complejidad, las características de C++ (clases y espacios de nombres) podrían hacer que la base del código sea más manejable.

EDITAR

Incluso si el proyecto actualmente no hacer uso de cualquier característica de C++, simplemente pueden estar planeando por delante.

Aparte de algunas diferencias menores (es decir, algunas convenciones de parámetros que la mayoría de las personas evitan de todos modos), el código fuente C se compila como C++ sin modificaciones. Dicho esto, en algunas áreas la sintaxis de C++ es más estricta que C (C le permite asignar un puntero vacío a otro tipo de puntero sin conversión, en C++, esto es un error) y aplicar esta rigurosidad evita problemas en el futuro. *

*) (Eso es una visión demasiado simplista, ver comentario)

Una razón adicional para que el cambio puede ser que debido a que la mayoría del desarrollo moderno favorece C++ sobre C, un conjunto más rico de herramientas está disponible .

Especulando de nuevo, pero en el nacimiento de Android C puede haber sido la única opción viable para el desarrollo de dispositivos integrados, y ahora esa restricción ya no es un problema.

+0

Esa fue mi primera reacción, pero no encontré ninguna característica de C++ utilizada en el código. –

+3

No, C y C++ son básicamente solo compatibles con la interfaz y no son compatibles con la compilación. Hay muchas, muchas trampas pequeñas, desde los ámbitos para nombrar tipos, hasta diferentes conceptos de constantes de tiempo de compilación, y cosas por el estilo. –

+0

@JensGustedt ¡Buen punto! Mientras uno siga los requisitos de sintaxis más estrictos de C++, ¿se puede tratar alguna vez a C como un subconjunto de C++? –

Cuestiones relacionadas