在autotools中,dnl'ed是什么?

发布于 2024-08-08 22:21:56 字数 61 浏览 7 评论 0 原文

我在 autoconf 代码中看到很多关于 dnl'ed 和未 dnl'ed 的内容。 dnl'ed是什么?

I see a lot in autoconf code about stuff being dnl'ed and not dnl'ed. What is dnl'ed?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一指流沙 2024-08-15 22:21:56

来自 GNU M4 1.4.13 宏处理器 手册:

8.1 删除输入中的空格

内置的dnl代表“丢弃到下一行”:

—内置:dnl

<块引用>

所有字符,直到并包括下一个换行符,都将被丢弃,而不执行任何宏扩展。如果遇到没有换行符的文件末尾,则会发出警告。

dnl的扩展无效。

它通常与 define 结合使用,以删除调用 define 后面的换行符。因此

 Define(`foo', `Macro `foo'.')dnl 确实是一个非常简单的宏。
   富
   ⇒宏富。

与处理注释的方式相反,直到下一个换行符(包括下一个换行符)的输入都会被丢弃(请参阅评论)。

[...]

from the GNU M4 1.4.13 macro processor manual:

8.1 Deleting whitespace in input

The builtin dnl stands for “Discard to Next Line”:

— Builtin: dnl

All characters, up to and including the next newline, are discarded without performing any macro expansion. A warning is issued if the end of the file is encountered without a newline.

The expansion of dnl is void.

It is often used in connection with define, to remove the newline that follows the call to define. Thus

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

The input up to and including the next newline is discarded, as opposed to the way comments are treated (see Comments).

[...]

岁月如刀 2024-08-15 22:21:56

IIRC,dnl执行下一行。它只是跳过当前行的其余部分。这就是您在 M4 文件中编写注释的方式。

dnl preprocessor will eat this
but not this dnl though this

将产生结果文档

but not this

(未经测试;也可能终止空闲进程或使硬盘崩溃)。

IIRC, dnl is do-next-line. It simply skips the remainder of the current line. It's how you write comments in M4 files.

dnl preprocessor will eat this
but not this dnl though this

will yield the result document

but not this

(untested; might also kill the idle process or crash your hard disk).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文