g++ -E option output

c++, c-preprocessor, compiler-construction, g++, gcc

Solution

According to the official documentation, the line is of the format:

# linenum filename flags

The `linenum` specifies that the following line originated in `filename` at that line number. Then there are four flags:

- `1` - Start of a new file

- `2` - Returning to a file

- `3` - System header file

- `4` - Treat as being wrapped in `extern "C"`

So let's interpret your linemarker:

# 91 "/usr/include/stdint.h" 3 4

The following line originated from line 91 of `/usr/include/stdint.h`. It is a system header file and should be treated as wrapped in `extern "C"`.

Problem

Using this option I receive files after preprocessing. There are many lines like: ``` # 91 "/usr/include/stdint.h" 3 4 ``` What do the numbers mean? First I thought that `#91` is the number of line where file is included, but that is not it. And about `3 4` I have no idea at all.

Original source