cl.exe
, the command line interface to Microsoft Visual C++, has three different options for outputting the preprocessed file (hence the inconsistency in the previous responses about Visual C++):
/E
: preprocess to stdout (similar to GCC's -E option)
/P
: preprocess to file
/EP
: preprocess to stdout without #line directives
(copied directly from https://stackoverflow.com/a/277362/3279)