Что означают числа в препроцессированных файлах .i при компиляции C с gcc?
Я пытаюсь понять процесс компиляции. Мы можем просмотреть промежуточный файл препроцессора, используя:
gcc -E hello.c -o hello.i
или
cpp hello.c > hello.i
Я точно знаю, что делает препроцессор, но мне трудно понять числа в некоторых строках. Например:
# 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
Цифры могут помочь отладчику отображать номера строк. Таким образом, моя догадка для первого столбца - это номер строки для файла столбца # 2. Но что делают следующие цифры?
Ответы
Ответ 1
Цифры, следующие за именем файла, являются флагами:
1: Это указывает на начало нового файла.
2: Это указывает на возвращение файла (после включения другого файла).
3: Это означает, что следующий текст поступает из файла заголовка системы, поэтому некоторые предупреждения должны быть подавлены.
4: Это означает, что следующий текст следует рассматривать как обернутый в неявный внешний блок "C".
Источник: https://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html