I see a difference between sdcc with only pre-processor and sdcpp.
I use some info in the pre defined macros, and to keep our multi-architecture build environment.
I give you the test suite.
With an empty file (dummy.c), we use this command to get the pre-processor parser outputs:
$ sdcc -E -Wp-dM dummy.c
This gives us the defined SDCC, the version & revission.
If we do the same with sdcpp, we miss SDCC, version & revision (i think it should have)
$ sdcpp -dM dummy.c