The output from the C preprocessor looks much like the input, except that all preprocessing directive lines have been replaced with blank lines and all comments with spaces. Whitespace within a line is not altered; however, a space is inserted after the expansions of most macro calls.
Source file name and line number information is conveyed by lines of the form
# linenum filename flags
which are inserted as needed into the middle of the input (but never within a string or character constant). Such a line means that the following line originated in file filename at line linenum.
After the file name comes zero or more flags, which are `1', `2' or `3'. If there are multiple flags, spaces separate them. Here is what the flags mean: