Подтвердить что ты не робот

Autoconf: dnl vs. #

В руководстве Autoconfig указано, что строки комментариев могут начинаться с dnl или #.

Есть ли какая-либо разница между ними, любая причина использовать ее, а не другую в любых обстоятельствах? Или это просто вопрос вкуса?

4b9b3361

Ответ 1

В файле configure.ac строки, отмеченные знаком "#", которые появляются после появления AC_INIT в результирующей конфигурации script. Комментарии dnl не будут. Одной из целей dnl является отброс нежелательных строк новой строки, чтобы сделать конфигурацию script доступной для чтения. Кроме того, уместно использовать комментарии dnl для документирования макроса m4; эти комментарии не имеют смысла в configure script, так как макрос m4 там не появляется, только его расширение.

Комментарии в Makefile.am обрабатываются по-разному. Makefile.am не обрабатывается m4, а automake, где соглашение заключается в отбрасывании строк, начинающихся С##, предшествующих только пробелами. (Хотя комментарии ### переносятся в Makefile.in) Поскольку Makefile.am не обрабатывается m4, 'dnl' не вводит комментарий.

Ответ 2

dnl - это макрос m4, который отбрасывает все входные данные, которые следует за ним в той же строке (включая новую строку). # ничего не значит в m4, поэтому он попадает в цель (Makefile?), в которой он выступает как комментарий.

Таким образом, ключевым отличием является то, что dnl является комментарием в исходном источнике, тогда как # становится комментарием в сгенерированном файле.