Los estudiantes descubren habilidades prácticas e increíbles en el lenguaje C
Aprenda 5 habilidades prácticas del lenguaje C lo antes posible
1. Inicialización especificada
Mucha gente sabe cómo inicializar matrices estáticamente como esta:
int fibsl] = [1,1, 2, 3, 5);
El estándar C99 en realidad admite una forma más intuitiva y sencilla de inicializar varios datos de recopilación (tales como: estructura, unión y formación).
2. Array
Podemos especificar los elementos del array para su inicialización. Esto es muy útil, especialmente cuando necesitamos mantener actualizado algún mapeo basado en un conjunto de #defines. Ahora, digamos que queremos proporcionar una cadena que describa el error para cada código de error. Para garantizar que la matriz conserve la última definición, podemos usar la sintaxis especificada por esta matriz independientemente de cualquier modificación o adición al archivo de encabezado. De esta manera, se puede asignar suficiente espacio estáticamente y se garantiza que el índice más grande sea legal, mientras que los índices especiales se inicializan al valor especificado y los índices restantes se inicializan a 0.
3. Estructuras y Uniones
Es muy útil para inicializar datos con los nombres de campos de estructuras y uniones. Supongamos que definimos:
punto de estructura fint x;int y;int z;
Luego, inicializamos el punto de estructura de esta manera: punto de estructura p = [.x = 3, .y = 4, .z = 5];
Cuando no queremos inicializar todos los campos a 0, este enfoque puede generar fácilmente una estructura en tiempo de compilación sin llamar específicamente a una función de inicialización.
Para las uniones, podemos usar el mismo método, pero solo inicializamos un campo.
4. Lista de Macros
Un método común en C es tener una lista de entidades nombradas y necesitar crear una función para cada una de ellas, y agregar cada una de ellas a Inicializar y ampliar sus nombres en diferentes módulos de código. Esto se usa a menudo en el código fuente de Mozilla y fue entonces cuando aprendí esta técnica. Por ejemplo, en el proyecto en el que trabajé el verano pasado, teníamos una lista de macros etiquetadas para cada comando. Define una macro FLAGLIST, que tiene un parámetro llamado -, que a su vez es una macro que puede llamar a cada parámetro de la lista.
5. Aserción en tiempo de compilación
Esta es en realidad una función muy "creativa" implementada mediante macros en lenguaje C. A veces, especialmente cuando se programa el kernel, es útil poder realizar afirmaciones verificadas condicionalmente en tiempo de compilación, en lugar de en tiempo de ejecución. Desafortunadamente, el estándar C99 aún no admite ninguna afirmación en tiempo de compilación.
Sin embargo, podemos usar el preprocesamiento para generar código que solo se compilará cuando se cumplan ciertas condiciones (preferiblemente comandos que no realicen funciones reales). Hay varias formas de hacer esto, generalmente creando una matriz o estructura con un tamaño negativo.