AnyCompiler

Enums e typedef

enum Day { MONDAY, TUESDAY, WEDNESDAY } declara três constantes nomeadas que na verdade são apenas ints por baixo, numeradas automaticamente a partir de 0 — MONDAY é 0, TUESDAY é 1, WEDNESDAY é 2. É a alternativa leve do C a uma longa lista de constantes #define.

typedef

typedef dá a um tipo existente um novo nome. É mais útil com structs: sem ele, toda declaração precisa da palavra-chave struct (struct Point p;) — typedef struct { ... } Point; deixa você escrever apenas Point p; em vez disso, que é a convenção que a maioria das codebases C reais usa.

#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 seguir: const e static — marcar algo como inalterável, e o erro de compilação real que você recebe ao tentar mesmo assim.

Practice exercise

Defina enum Day { MONDAY, TUESDAY, WEDNESDAY }. Fixe uma variável today em WEDNESDAY e imprima-a como um int.