Почему #define не требует точки с запятой?

Я писал тестовый код на C. По ошибке я вставил ;после #define, что дало мне ошибки. Почему точка с запятой не требуется для #defines?

Более конкретно:

Способ 1: работает

const int MAX_STRING = 256;

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

Способ 2: не работает - ошибка компиляции.

#define MAX_STRING 256;

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

В чем причина различного поведения этих кодов? Оба MAX_STRING не являются константами?

18
задан TheLostMind 15 November 2016 в 16:13
поделиться