¿Cuáles podrían ser las limitaciones de las macros en la programación de sistemas incrustados? En contraste con la programación en c.
¿Cuáles podrían ser las limitaciones de las macros en la programación de sistemas incrustados? En contraste con la programación en c.
Como está redactado, la pregunta que cita no tiene sentido. Las instalaciones de macros son parte de C, C ++, ensamblador y, probablemente, muchos otros lenguajes. Si me hicieran esta pregunta, lo explicaría cortésmente si quisiera el trabajo. Cuando no se ofreció ninguna explicación y el chico aún insistía en una respuesta, probablemente me alejaría de esta compañía con disgusto.
Hay explicaciones que podrían dar sentido a esta pregunta:
La macro a veces se usa como una abreviatura para 'ensamblador de macros', en cuyo caso la pregunta sería sobre C versus ensamblador. Mi respuesta estándar es: "El ensamblador es mejor, con la condición de que tenga suficiente tiempo. ¿Cuándo fue el último proyecto que recibió el tiempo suficiente?"
Otra interpretación sería el uso de macros versus el uso de funciones, ambos dentro de C. Hay muchos textos al respecto, la idea general es que siempre usas funciones, a menos que realmente necesites usar una macro. E incluso entonces deberías pensar dos veces.
Tenga en cuenta que en ninguno de los dos casos hay algo específico acerca de incrustado. Eso tiene sentido, porque incrustado es un término muy amplio para tener consecuencias específicas en el estilo de programación. Para sistemas muy pequeños (tamaño de código limitado), el uso de marcos en lugar de llamadas a funciones podría conducir a un aumento de código. Pero el uso cuidadoso de las macros podría reducir el tamaño del código, por lo que incluso entonces no hay una respuesta definitiva.
El uso múltiple de parámetros en macros puede dar como resultado que las expresiones se evalúen dos veces, lo que no se produciría en la llamada de función equivalente.
Los parámetros deben estar entre paréntesis dentro de la definición de macro para evitar problemas con el orden de evaluación de las expresiones.
(parafraseado de la sección 4.11.2 de K & R Second Edition)
Lea otras preguntas en las etiquetas microcontroller embedded c