AnyCompiler

Enums y typedef

enum Day { MONDAY, TUESDAY, WEDNESDAY } declara tres constantes con nombre que en realidad son solo ints por debajo, numeradas automáticamente a partir de 0 — MONDAY es 0, TUESDAY es 1, WEDNESDAY es 2. Es la alternativa ligera de C a una larga lista de constantes #define.

typedef

typedef le da a un tipo existente un nuevo nombre. Es más útil con structs: sin él, cada declaración necesita la palabra clave struct (struct Point p;) — typedef struct { ... } Point; te permite escribir simplemente Point p; en su lugar, que es la convención que usa la mayoría de las codebases reales de C.

#include <stdio.h>

enum Day { MONDAY, TUESDAY, WEDNESDAY };

typedef struct {
    int x;
    int y;
} Point;

int main() {
    enum Day today = TUESDAY;
    printf("%d\n", today);
    Point p = {1, 2};
    printf("%d %d\n", p.x, p.y);
    return 0;
}
Output
1
1 2

A continuación: const y static — marcar algo como inmodificable, y el error de compilación real que obtienes al intentarlo de todas formas.

Practice exercise

Define enum Day { MONDAY, TUESDAY, WEDNESDAY }. Fija una variable today en WEDNESDAY e imprímela como un int.