问题标签 [m4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
301 浏览

postgresql - 有条件地生成 DDL(特定于 postgres)脚本

我的应用程序不适合“通用”RDBMS 模式类别,我不想要庞大的 DDL 脚本——因此我需要#include语义,我可能会有不同的脚本变体,因此我需要#ifdef语义。

GNU m4 是要走的路吗?

或者也许有一些宏功能psql

编辑:在与 m4 合作一段时间后,它似乎符合要求,我已经回答了下面的问题(暂时不会接受),但如果你觉得你可以为这个问题添加更多内容,请这样做。

0 投票
2 回答
429 浏览

autotools - 如何在 AC_CONFIG_SRCDIR 内使用空格转义路径

我需要在 AC_CONFIG_SRCDIR 中包含一些包含空格的路径。我应该如何逃避他们?例如,如果我有“some file.in”,我应该如何声明它:

AC_CONFIG_SRCDIR[某个文件]

0 投票
1 回答
430 浏览

newline - 如何匹配 GNU M4 中的换行符_properly_

我正在尝试制作一个替换换行符的宏。

我的第一次尝试是:

这在不使用中间宏时给出了正确的答案,否则只匹配最后一个换行符。请参阅下面的结果:

然后我发现了类似的问题: 在m4的patsubst中,如何用空格替换换行符?

所以,我刚刚做了:

它给:

最后一种选择也有同样的问题。有什么建议么?

0 投票
4 回答
953 浏览

java - Scala、Maven 和预处理器

我知道所有反对 Java 中的预处理器和宏的哲学论点。我不同意仅仅因为某些人可能滥用语言功能,就应该将其排除在外。

我想在我的 Java 和 Scala 代码中包含__FILE__和宏,以实现高效的日志记录。__LINE__由于运行时性能影响,任何使用 Exception 都是不可接受的。那些认为可以在“生产代码”中关闭日志记录的人应该听从 Brian Kernighan 的建议:

删除“现在程序正在运行”的错误消息就像在地面上戴降落伞,但一旦你在空中就将其取下。

这些宏是否有可能成为语言?如果没有,有没有办法使用 Maven 运行像 m4 这样的预处理器?

谢谢。

0 投票
2 回答
1976 浏览

preprocessor - 通用预处理器:如何用于任何类型的文件?

我想知道是否有人使用通用预处理器来处理文本文件。

这个想法出现了,因为 Java 没有预处理器,但我想要条件代码编译等。

现在,进一步考虑这个想法,我不妨对需要频繁编辑的任何类型的文件使用通用预处理器,但所有编辑都以类似的方式进行。

现在,我想使用好的 ol' m4 ,因为我使用 C 预处理器并且有GPP,但是,那个在 2007 年停止开发。

我想要一些建议哪个预处理器更可取,如果可能的话,它应该采用与 C 预处理器采用相同方式的指令#define SOMETHING

由于 m4 不使用印记或其他东西,它可能会与其他代码冲突,当 m4 是要走的路时,我需要关于如何为每个指令加上印记或不同前缀或其他东西的建议。

0 投票
1 回答
111 浏览

preprocessor - m4不服从膨胀?

我在这里使用 m4 进行一点文本预处理,它的行为方式我不明白。

这是有问题的部分:

无论是否定义(m4 -DTEST) ,此宏将始终扩展为。.oTEST

我究竟做错了什么?

0 投票
1 回答
2056 浏览

shell - m4 - 执行一个 shell 命令

我是 m4 的新手,正在尝试设置一个宏,允许用户在 configure-time 指定库的位置./configure --with-mylib=/path/to/lib.so

在 m4 宏 using 中AC_ARG_WITH,我将检查给定文件是否确实存在,然后将路径存储到所述库。MYLIB_PATH=esyscmd([dirname $withval]). 这会产生错误:

p>

shell 似乎不知道$withval. 我如何通过它来执行这个命令?

谢谢,

安德鲁

0 投票
2 回答
244 浏览

gnu - M4二进制输出

是否可以定义输出二进制整数的 M4 宏?例如:

它应该输出 1 个字节,值为 42。

0 投票
9 回答
2193 浏览

c++ - 除了 autoconf 之外,m4 还有什么值得注意的用途吗?

有人知道m4除了 autoconf 之外的任何用途(最好在 ac 或 c++ 环境中),这不仅仅是一个学术练习,因为它有助于解决一个本来很难解决的问题(例如使用“标准”预处理器) .

我问这个是因为我正在考虑用 C++ 做一个项目的方法,我想通过使用脚本、预处理器等来减少或最小化冗余。

0 投票
2 回答
3381 浏览

m4 - 在 m4 中,如何包含名称中包含环境变量的文件?

我想在我的 m4 文本中包含一个相对于我的沙箱基目录的文件,而不使用-I开关。

到目前为止,我已经弄清楚了如何使用 sys 调用来获取环境变量:

接下来,我想包含一个基于该环境变量的文件:

总的来说,我有:

哪个打印:

我知道包含的正常语法是

但是如果我引用MODEL_ROOT/sw/lib/m4_macros/foreach2.m4,那么 m4 就像:

m4 抱怨:

如何在其路径中包含具有环境变量的文件?