What is the meaning of lines starting with a hash sign and number like '# 1 "a.c"' in the gcc preprocessor output?
c, c-preprocessor, gcc
Solution
These lines are hints for debugging (where the code following the line actually came from)
# line-number "source-file" [flags]
Meaning of flags (space separated):
- 1 - Start of a new file
- 2 - Returning to previous file
- 3 - Following text comes from a system header file (#include <> vs #include "")
- 4 - Following text should be treated as being wrapped in an implicit extern "C" block.
Problem
I print out the output of C preprocessor by using ``` gcc -E a.c ``` The output contains many lines like ``` # 1 "a.c" # 1 "<built-in>" # 1 "<command-line>" # 1 "a.c" # 1 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 1 3 # 19 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 3 # 1 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 1 3 # 31 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 3 # 32 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 3 # 20 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 2 3 ``` I've never seen this kind of syntax in C. Can someone explain what this is doing?