Macros are simple string replacements.
(Strictly speaking, they work with preprocessing tokens, not arbitrary strings.)
#include <stdio.h>
#define SQUARE(x) x*x
int main(void) {
printf("%d\n", SQUARE(1+2));
return 0;
}
You may expect this code to print 9 (3*3), ...