Препроцессированный *.i файл
Препроцессированный *.i файл - это результат работы препроцессора языка C или C++. Как правило, именно такое расширение имеют файлы, получившиеся в результате работы препроцессора. Препроцессор выполняет первичные преобразования исходного текста программы, используя при этом только лексический анализ.
Препроцессор выполняет следующие действия:
- Включение заголовочных файлов (директива '#include');
- Подстановка макросов (директива '#define');
- Условная компиляция (директивы '#if', '#ifdef', '#else', '#elif', '#endif').
Препроцессор может использоваться как вспомогательный инструмент при статическом анализе кода. Так, например, в статическом анализаторе PVS-Studio используются сразу три различных препроцессора (MSVC, Clang, C++Builder) в зависимости от типа исходного проекта или файла. Это необходимо потому, что в основе анализатора лежит библиотека разбора кода VivaCore, которая не имеет встроенного препроцессора. Необходимость в предварительном препроцессировании исходного файла обусловлена тем, что для качественного статического анализа кода необходимо, что бы все директивы '#include' и '#define' были раскрыты.
Получить препроцессированный файл в среде MSVC можно, установив значение свойства 'Generate Preprocessed File' из вкладки 'C/C++\Preprocessor', как показано на рисунке 1.

Получить препроцессированый файл, использую компилятор GCC можно, добавив в его вызов параметры '-E -o имя_файла.i'.
Библиографический список
- Wikipedia. Препроцессор Си.
- Препроцессирование (в языке Си/Си++).
- MSDN. Preprocess to a File.
0