Это команда pmcpp, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
pmcpp - простой препроцессор для Performance Co-Pilot
СИНТАКСИС
pmcpp [-Прс] [-D имя[=ценностное ] ...] [-I директория ...] [вводить]
ОПИСАНИЕ
pmcpp предоставляет очень простой препроцессор, изначально разработанный для управления
Файлы пространства имен показателей производительности (PMNS) для второго пилота производительности (PCP), но позже
обобщены для предоставления условных блоков, включая обработку файлов, встроенную команду оболочки
выполнение и подстановка макросов для произвольных файлов. Чаще всего используется внутри
для обработки файла (ов) PMNS после pmLoadNameSpace(3) или pmLoadASCIINameSpace(3) называется
и предварительно обработать файлы конфигурации для pmlogger(1).
Строки ввода считываются из вводить (или стандартный ввод, если вводить не указано), обрабатывается
и записывается на стандартный вывод.
Все комментарии в стиле C вида / * ... * / удаляются из входного потока.
Нет предопределенных макросов для pmcpp хотя макросы могут быть определены в команде
линия с использованием -D вариант, где имя и ценностное должны следовать тем же правилам, что описаны
ниже для #define Директивы.
pmcpp принимает следующие директивы во входном потоке (например, CPP(1)):
· #включают "имя файла"
or
#включают <имя файла>
В любом случае путь поиска в каталоге для имя файла пытается имя файла сначала, затем
каталог для командной строки вводить (если есть), а затем любые каталоги, указанные в -I
аргументы командной строки и, наконец, $ PCP_VAR_DIR / pmns каталог (последний для
обратная совместимость с более ранними версиями pmcpp и подразумеваемое используется из
pmLoadASCIINameSpace(3 г.)). #включают директивы могут быть вложенными до максимальной глубины
5.
· #оболочка "команду"
or
#оболочка 'команду'
Команда оболочка команду будет выполнен, и стандартный вывод будет вставлен в поток
данных, которые будут обрабатываться pmcpp. Функционально это похоже на #включают
директиве, за исключением того, что строки ввода читаются из команду а не файл. В #оболочка
Директива наиболее полезна для включения или исключения #define or #ундеф директивы на основе
по логике времени выполнения в команду.
· #define имя ценностное
or
#define имя "ценностное "
or
#define имя 'ценностное '
Определяет значение для макроса имя которое должно быть действительным именем в стиле C, поэтому ведущие
буквы или подчеркивания, за которыми следует ноль или более буквенно-цифровых символов или знаков подчеркивания. ценностное
является необязательным (и по умолчанию используется пустая строка). Механизма выхода из персонажа нет,
но для определения ценностное с особым
символы или встроенные горизонтальные пробелы (без символов новой строки).
· #ундеф имя
Удаляет определение макроса, если оно есть, для имя.
· #ифдеф имя
...
#endif
or
#ифндеф имя
...
#endif
Заключительные строки будут удалены или включены, в зависимости от того, имя is
определено или нет.
· #еще
В пределах #ифдеф or #ифндеф блок, #еще может использоваться для разделения строк, которые нужно включить, если
предыдущее условие `` если '' ложно.
Подстановка макросов достигается разбиением входящего потока на слова, разделенные белым
пробел или символы, которые недопустимы в имени макроса, т. е. не буквенно-цифровые и не
подчеркивать. Каждое слово проверяется, и если оно соответствует имени макроса, слово заменяется на
значение макроса, в противном случае слово не изменяется.
Обычно для каждой входной строки имеется одна строка вывода, хотя строка может быть пустой, если
текст был удален из-за обработки комментариев или условных директив.
Когда происходит изменение входного потока, создается дополнительная выходная строка из
форма:
# белье "имя файла"
указать на после строка вывода соответствует номеру строки Ленено ввода
файл имя файла.
Команда -P Аргумент подавляет создание этих линий-маркеров.
Команда -s аргумент изменяет ожидаемый стиль ввода с C-подобного на подобный оболочке (где # - это
префикс комментария). Это вызывает следующие изменения в pmcpp поведение:
· Символ префикса управления изменяется с # в %, так %включают например.
· Удаление комментариев не выполняется.
Чтобы обеспечить более тонкий контроль над расширением макроса, -r опция ограничивает подстановку макроса
слова, соответствующие шаблонам #имя или #{имя} или если -s указано, то %имя или
%{имя}. В этом режиме макрос имя один только во входном потоке никогда не будет расширен,
однако в строках управления (например, #ифдеф) макрос имя должен появиться наедине с
символ префикса или фигурные скобки (см. ПРИМЕРЫ ниже).
Важнo CPP(1) особенности, которые поддерживается pmcpp следующие:
· Макросы с параметрами - pmcpp макросы поддерживают только строку без параметров
подмена.
· #если выраж
...
#endif
· Вложенное использование #ифдеф or #ифндеф.
· Удаление комментариев в стиле C ++, как в // comment.
· Восстановление после ошибки - первая ошибка, с которой столкнулся pmcpp будет фатальным.
· CPP(1) параметры командной строки, такие как -o, -W, -U и -x.
ПРИМЕРЫ
┌───────────────────────────────────────────────┐
│Команда: pmcpp │
├────────────────────────┬──────────────────────
│вход │ Результат │
├────────────────────────┼──────────────────────
│ │ # 1 " "│
│ # define MYDOMAIN 27 │ │
│ │ │
│root {│ root {│
│ foo MYDOMAIN: 0: 0 │ foo 27: 0: 0 │
│} │} │
└────────────────────────┴──────────────────────
В следующих примерах файл Частоты содержит строки:
% define dk_freq 1minute
% define cpu_freq '15 sec '
┌─────────────────────────────────────────────────── ──────────────────────
│Команда: pmcpp -рс │
├────────────────────────────────────────────────── ──────────────────────
│вход │ Результат │
├────────────────────────────────────────────────── ──────────────────────
│ # получить частоты каротажа │ # получить частоты каротажа │
│ # например, макрос dk_freq │ # например, макрос dk_freq │
│% включают "частоты" │ │
│ │ │
│ журнал обязательно на% dk_freq {│ журнал обязательно через 1 минуту {│
│ disk.dev │ disk.dev │
│} │} │
│ │ │
│ # здесь нет% для want_cpu │ # нет% для want_cpu │
│% ifdef want_cpu │ │
│% define cpu_pfx 'kernel.all.cpu.' │ │
│log обязательно на% cpu_freq {│ │
│% {cpu_pfx} пользователь │ │
│% {cpu_pfx} sys │ │
│} │ │
│% endif │ │
└────────────────────────────────────────────────── ──────────────────────
┌─────────────────────────────────────────────────── ──────────────────────
│Команда: pmcpp -рс -Dwant_cpu │
├────────────────────────────────────────────────── ──────────────────────
│вход │ Результат │
├────────────────────────────────────────────────── ──────────────────────
│ # получить частоты каротажа │ # получить частоты каротажа │
│ # например, макрос dk_freq │ # например, макрос dk_freq │
│% включают "частоты" │ │
│ │ │
│ журнал обязательно на% dk_freq {│ журнал обязательно через 1 минуту {│
│ disk.dev │ disk.dev │
│} │} │
│ │ │
│ # здесь нет% для want_cpu │ # нет% для want_cpu │
│% ifdef want_cpu │ │
│% define cpu_pfx 'kernel.all.cpu.' │ │
│ журнал обязательно на% cpu_freq {│ журнал обязательно 15 секунд {│
│% {cpu_pfx} пользователь │ kernel.all.cpu.user │
│% {cpu_pfx} sys │ kernel.all.cpu.sys │
│} │} │
│% endif │ │
└────────────────────────────────────────────────── ──────────────────────
CFP ОКРУЖАЮЩАЯ СРЕДА
Переменные среды с префиксом PCP_ используются для параметризации файла и каталога
имена, используемые PCP. При каждой установке файл /etc/pcp.conf содержит местные ценности
для этих переменных. В $ PCP_CONF переменная может использоваться для указания альтернативы
файл конфигурации, как описано в pcp.conf(5).
Используйте pmcpp онлайн с помощью сервисов onworks.net