I'm pretty sure the preprocessor goes first. BUT it appears to put a space in between the two -s, at least in my testing, so the result is the same.
http://gcc.gnu.org/onlinedocs/cppinternals/Token-Spacing.htm...
I can't find anything in the C spec that says this is strictly required, but that doesn't mean it's not in there.