В автоинструментах что такое dnl'ed? - PullRequest
3 голосов
/ 27 октября 2009

В коде autoconf я вижу много информации о том, что вещи были добавлены, а не удалены. Что это такое?

Ответы [ 2 ]

7 голосов
/ 27 октября 2009

из макропроцессора GNU M4 1.4.13 руководство:

8.1 Удаление пробелов на входе

Встроенный dnl означает «Сброс на следующую строку»:

- Построение: dnl

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

Расширение dnl является недействительным.

Он часто используется в связи с define, чтобы удалить символ новой строки, следующий за вызовом define. Таким образом

   define(`foo', `Macro `foo'.')dnl A very simple macro, indeed.
   foo
   ⇒Macro foo.

Ввод до следующей новой строки включительно игнорируется, в отличие от способа обработки комментариев (см. Комментарии ).

[...]

2 голосов
/ 27 октября 2009

IIRC, dnl - do-next-line. Он просто пропускает остаток текущей строки. Вы пишете комментарии в файлах M4.

dnl preprocessor will eat this
but not this dnl though this

даст результат документа

but not this

(не проверено; может также убить процесс простоя или сбить ваш жесткий диск).

...