Why does #define not require a semicolon?
04:48 24 May 2012

I was writing some test code in C. By mistake I had inserted a ; after a #define, which gave me errors. Why is a semicolon not required for #defines?

More specifically :

Method 1: works

const int MAX_STRING = 256;

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

Method 2: Does not work - compilation error.

#define MAX_STRING 256;

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

What is the reason of the different behavior of those codes? Are those both MAX_STRINGs not constants?

c c-preprocessor