Есть ли препроцессор C как самостоятельная программа? - PullRequest
5 голосов
/ 12 декабря 2010

Я знаю, что препроцессор C существует как часть компилятора. Но я ищу независимую программу. Есть ли такой инструмент?

Ответы [ 6 ]

10 голосов
/ 12 декабря 2010

Его часто называют cpp.Например, на моем компьютере с Linux:


CPP(1)                                GNU                               CPP(1)

NAME
       cpp - The C Preprocessor

SYNOPSIS
       cpp [-Dmacro[=defn]...] [-Umacro]
           [-Idir...] [-iquotedir...]
           [-Wwarn...]
           [-M|-MM] [-MG] [-MF filename]
           [-MP] [-MQ target...]
           [-MT target...]
           [-P] [-fno-working-directory]
           [-x language] [-std=standard]
           infile outfile

Этот конкретный компонент является частью gcc и доступен для самых разных платформ.

3 голосов
/ 12 декабря 2010

Вы также можете взглянуть на m4

Что такое м4?

M4 можно назвать «языком шаблонов», «языком макросов» или «языком препроцессора». Название «m4» также относится к программе, которая обрабатывает тексты на этом языке: этот «препроцессор» или «макропроцессор» принимает в качестве входных данных шаблон m4 и отправляет его на выход после воздействия на любые встроенные директивы, называемые макросами.

3 голосов
/ 12 декабря 2010

MCPP .

С домашней страницы:

mcpp - это препроцессор C / C ++ со следующими функциями.

  • Реализует все спецификации C90, C99 и C ++ 98.
  • Предоставляет набор средств проверки для всестороннего тестирования соответствия и качества препроцессора C / C ++. Когда этот набор проверки применяется, mcpp выделяется среди многих существующих препроцессоров.
  • Имеет многочисленные и целевые средства диагностики для проверки всех проблем предварительной обработки, таких как скрытая ошибка или отсутствие переносимости в исходном коде.
  • Имеет директивы #pragma для вывода отладочной информации.
  • Переносим и портирован на многие системы компиляторов, включая GCC и Visual C ++, в UNIX-подобных системах и Windows.
  • Имеет различные режимы поведения.
  • Может быть построен либо как специфичный для компилятора препроцессор, чтобы заменить резидентный препроцессор конкретной системы компилятора, либо как независимая от компилятора команда, либо> даже как подпрограмма, вызываемая из некоторой другой основной программы.
  • Предоставляет исчерпывающие документы на японском и английском языках.
  • Это программное обеспечение с открытым исходным кодом, выпущенное под лицензией BSD-style-license.
2 голосов
/ 12 декабря 2010

Я использовал filepp для предварительной обработки файлов, отличных от прямой C. Это модуль Perl, поэтому он довольно переносим.Это удобно тем, что вы можете использовать все знакомые вам идиомы и добавлять некоторые полезные функции.

С веб-сайта:

Почему filepp, а не обычный старый cpp?

cpp разработан специально для генерации вывода для компилятора Си.Да, вы можете использовать любой тип файла с ним, но вывод, который он создает, включает в себя множество пустых строк и строк в стиле:

# 1 "file.c"

Очевидно, что эти строкиочень полезен для C-компилятора, но бесполезен, скажем, в HTML-файле.Кроме того, поскольку filepp написан на Perl, он 8-битный чистый и работает с любым набором символов, а не только с символами ASCII.filepp также настраивается и, как мы надеемся, более удобен для пользователя, чем cpp.

1 голос
/ 12 декабря 2010

Он является частью пакета и обычно называется cpp (C PreProcessor).

which cpp
# /usr/bin/cpp
man cpp
1 голос
/ 12 декабря 2010

cpp только один. Это отдельная программа, вызываемая gcc при компиляции.

...