You can use printfinstead putsand do something similar.
#define SOMMA(x, y) printf("sum of %d and %d is %d\n", x, y, (x + y));
A note %daccepts only integer values, so you probably need a different macro for double / floats.
EDIT
As stated in rcgdlr, you can also use sprintfor snprintfif you want to create a string containing your result.
#define MAXLEN 256
#define SOMMA(x, y, res) snprintf(res, MAXLEN, "sum of %d and %d is %d\n", x, y, (x + y));
:
char buffer[MAXLEN];
SOMMA(4, 6, buffer);
printf("%s\n", buffer);