How do I find out which preprocessor my C compiler uses?

When you run clang main.c, the compiler first runs the preprocessor on main.c. You can run just the preprocessor step with clang -E main.c.

Which preprocessor does clang use? The compiler calls out to subprogram for this. You can ask the compiler which subprograms it uses with the -print-prog-name flag.

% clang -print-prog-name=cpp

The main interesting thing is that this preprocessor is not a clang preprocessor; it’s the one provided by Xcode on my system.