¿Cuáles son los pros / contras de C y C ++?

-1

¿Cuáles serían los pros y los contras de usar C ++ sobre C para la programación de uC (AVR)?

    
pregunta dugres

4 respuestas

10

La pregunta correcta no es "C o C ++" (con una respuesta binaria de un bit) sino "qué funciones de C ++ agregar a mi C (y qué funciones de C descartar como consecuencia)" (que tiene mucho) de bits, que probablemente variará con el proyecto y el chip en particular).

Hay algunas características de C ++ que definitivamente deberías usar porque corrigen los 'errores' en C y no tienen código ni sobrecarga de tiempo de ejecución, como:

  • tipo bool con valores verdaderos y falsos (C no tiene un solo valor 'verdadero')
  • pasar parámetros por referencia (en lugar de por puntero)
  • usando new / delete en lugar de malloc / free
  • para (int i = 0; i < n; i ++)
  • declare una variable inmediatamente antes de la (primera) declaración que la usa
  • matrices locales que tienen un tamaño calculado

Tenga en cuenta que algunas de estas características lo están convirtiendo en las versiones más nuevas de C.

Algunas otras características probablemente deberían evitarse en los microcontroladores porque tienen una sobrecarga (a veces grande):

  • información de tipo de tiempo de ejecución (RTTI)
  • excepciones (OMI, el jurado aún está deliberando sobre esto)
  • std :: cout con sus maravillosos < < operadores (esto no es un idioma sino un problema de biblioteca)

Otras características pueden ser una gran ventaja, pero tomará algún tiempo aprender y aplicar correctamente, como

  • clases
  • herencia
  • funciones virtuales
  • plantillas

Entonces, para resumir: si tiene la oportunidad de usar un compilador de C ++ por todos los medios, úselo y comience a usar las funciones de C ++ una por una a medida que encuentre un buen uso para ellas. No se sienta obligado a tragar todo C ++ de una sola vez.

    
respondido por el Wouter van Ooijen
2

En general, C le permite escribir código que se compile en un binario más pequeño / más rápido que C ++.

C ++ es un superconjunto de C. Le brinda las potentes funciones de la programación orientada a objetos, lo que permite una mejor reutilización / escalado, etc. y se vuelve más importante a medida que crece el tamaño y la complejidad de su solución de software. Esto tiene el costo de una mayor sobrecarga, tanto en el tamaño del binario generado, en la cantidad de memoria requerida (RAM) para la ejecución y en la velocidad de ejecución.

Los microcontroladores (uC) generalmente se ejecutan más lentamente que los microprocesadores de tamaño completo, y tienen almacenamiento de código y memoria de ejecución limitados. Todo esto hace que C sea más adecuado para la programación de uCs. También encontrará que la mayoría de los controladores / bibliotecas / código existente para los uC (proporcionados por los proveedores y la comunidad) están escritos en C. Aunque las bibliotecas de C se pueden usar en los programas de C ++, si desea contribuir de nuevo a la comunidad, se prefiere C para uCs.

    
respondido por el Marcin K
1

Bueno, todo lo que necesita está en C. Cualquier código C ++ usa C estándar para realizar tareas en los microcontroladores. C ++ podría ayudarlo a escribir código "más agradable", portátil, con clases y métodos si desea promover su trabajo entre los aficionados (vea el proyecto Arduino), a un costo mayor. Pero la industria de sistemas embebidos ha sobrevivido tanto tiempo en C, solo depende de sus requisitos. El proyecto AVR-GCC tiene alias para todos los registros y bits nombrados en la hoja de datos, por lo que el código es bastante legible.

    
respondido por el Vanvan
1

... y si puedo agregar, desde la perspectiva de la afición de la electrónica principalmente a la programación, menos líneas de código no solo ahorran espacio de memoria valioso / limitado en la unidad universal, sino que requieren menos gastos generales de corriente, requisitos de batería (capacidad, peso, tamaño) y genera menos calor ... esto último puede causar problemas en el rendimiento del chip. Todo lo anterior es vital si vamos a utilizar teléfonos inteligentes delgados y ligeros que proporcionen de manera confiable muchas funciones y servicios. Por lo tanto, los problemas de software y las necesidades / limitaciones de hardware están vinculados. Enviado con humildad .....

    
respondido por el charles

Lea otras preguntas en las etiquetas