La idea de ser “perfecto” en la práctica de la programación en C en 2 meses probablemente no sea un objetivo realista. Sin embargo, puede familiarizarse con todas las herramientas que ofrece el lenguaje C.
La competencia en C es un poco como ser competente con un conjunto de herramientas de 60 piezas. Debe conocer todas las herramientas del kit, dónde se usa adecuadamente y qué problemas puede causar su mal uso.
Las herramientas que necesitará para la programación incrustada en C incluyen punteros de datos, punteros de función, manipulación de bits, representación de complemento a dos (utilizada por prácticamente todas las arquitecturas incrustadas modernas), representaciones de estructura que incluyen el uso adecuado de la macro offsetof (), recursión, hilo seguridad, la diferencia entre variables globales, estáticas, automáticas y de registro, y el uso adecuado de la palabra clave “volátil”. Debería sentirse 100% cómodo con lo que hace exactamente un tipo de conversión, y qué tipo de sorpresas puede causar una conversión de tipo automática; por ejemplo, ¿qué sucede cuando pasa el número -1 a una función que espera un int sin signo? Debe comprender el alcance de la variable y lo que significa cuando una variable queda fuera de alcance.
- Para un estudiante más nuevo que completó BTech en electrónica, ¿recomendaría una certificación en CCNA O un curso integrado, desde una perspectiva puramente laboral?
- ¿Qué tema debe seleccionarse para el sexto semestre de sistemas integrados, comunicaciones y electrónica de potencia?
- ¿Cuál es la razón detrás del microcontrolador 8051 no está ejecutando el código hasta que lo reinicie manualmente?
- ¿Cuántos bits requiere una instrucción enviada como mínimo, incluidos los operandos? (Microcontrolador AVR Atmel de 8 bits)
- ¿Cuáles son los temas importantes para la entrevista del desarrollador integrado?
También cerraré volviendo a lo primero que enumeré en el párrafo anterior: punteros de datos. Si no ha dominado totalmente el uso de punteros de datos, incluidos punteros a punteros, etc., entonces no es un programador experto en C. Por ejemplo, deberías poder explicar la diferencia entre estas declaraciones:
char * D;
char ** D;
char D [10];
char * D [10];
char (* D) [10];
Los primeros cuatro son paradigmas con los que puede esperar encontrarse con bastante frecuencia.
El quinto es menos común, pero sigue siendo razonable esperar que un programador de C entienda fácilmente el tipo de datos. Si desea probarse a sí mismo, vea si puede calcular los valores de sizeof (D) y sizeof (* D) para cada una de esas declaraciones.