const , #define macros are not.
const has scope C, #define is applied to the file.
const most useful when passing parameters. If you see const used in a prototype with pointers, you know that it is safe to pass your array or structure because the function will not change it. There is no const , and he can.
Take a look at the strcpy() type definition and you will see what I mean. Apply "constness" to run prototypes from the start. Retro-fitting const not as complicated as "a lot of work" (but it's good if you get paid by the clock).
Also consider:
const char *s = "Hello World"; char *s = "Hello World";
what is right and why?
source share