What do the numbers mean in the preprocessed .i fi

2019-02-07 20:23发布

I am trying to understand the compiling process. We can see the preprocessor intermediate file by using:

gcc -E hello.c -o hello.i

or

cpp hello.c > hello.i

I roughly know what the preprocessor does, but I have difficulties understanding the numbers in some of the lines. For example:

 # 1 "/usr/include/stdc-predef.h" 1 3 4
 # 1 "<command-line>" 2
 # 1 "hello.c"
 # 1 "/usr/include/stdio.h" 1 3 4
 # 27 "/usr/include/stdio.h" 3 4
 # 1 "/usr/include/features.h" 1 3 4
 # 374 "/usr/include/features.h" 3 4

The numbers can help debugger to display the line numbers. So my guess for the first column is the line number for column #2 file. But what do the following numbers do?

1条回答
The star\"
2楼-- · 2019-02-07 21:19

The numbers following the filename are flags:

1: This indicates the start of a new file.

2: This indicates returning to a file (after having included another file).

3: This indicates that the following text comes from a system header file, so certain warnings should be suppressed.

4: This indicates that the following text should be treated as being wrapped in an implicit extern "C" block.

Source: https://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html

查看更多
登录 后发表回答