Symbolic constant is a sequence of characters that substitute for a sequence of characters that can not be changed. The characters may represent a numeric constant, a character constant, or a string constant. When a program is preprocessed, each occurrence of the symbolic constant is replaced by its corresponding character sequence.
They are usually defined at the beginning of the program.
Keep in mind that preprocessing is different than compiling. So, preprocessing happens before compiling.
Example:
#include <stdio.h>
#define PI 4.1416
#define SUM(a,b) a+b
int main()
{
printf("Value of PI = %f\n", PI);
printf("Sum of 3 and 4 = %d", SUM(3,4));
return 0;
}
Preprocessing statements are not terminated by semicolons.