A sketch with this line here
#define s1 42
doesn't compile because it breaks the prototype at avr/include/string.h:129
extern char *strdup(const char *s1);
.
I don't use Arduino but I think s1 is not supposed to be a reserved identifier.
My suggestion would be using __s1 or_S1. I am not familiar enough with the app to suggest (let alone commit) a different order of processing the Arduino sketch to C++.