cpp: Do macro expansion for the filename of an #include statement
tests: Add test case showing bad handling of functions marked as extern

"extern" in a function prototype does not make a difference, since "extern"
is the default for functions anyways, so it should be ignored, allowing
functions with and without extern to be merged.
Ignore "extern" on function prototypes