¿Por qué #define no requiere un punto y coma?

Estaba escribiendo un código de prueba enC. Por error había insertado un; después de#define, lo que me dio errores. ¿Por qué no se requiere un punto y coma para#defines?

Más específicamente :

Método 1: obras

const int MAX_STRING = 256;

int main(void) {
    char buffer[MAX_STRING];
}

Método 2: No funciona - error de compilación.

#define MAX_STRING 256;

int main(void) {
    char buffer[MAX_STRING];
}

¿Cuál es la razón del comportamiento diferente de esos códigos? ¿Esas dos MAX_STRINGs no son constantes?

Respuestas a la pregunta(7)

Su respuesta a la pregunta