如何使用 m4 解决警告"内置'定义'忽略的过多参数"



我正在使用m4-define创建一个宏。我尝试使用include(file(读取文件的内容,如下所示。

define(`TEST', include(file1))
TEST

文件1:

test -abc -LDFLAGS "-Wl,-rpath,/home/user -lmsg"

当我运行代码时,它会发出警告,并且不会打印任何超出-Wl 的内容

m4:r1:1: Warning: excess arguments to builtin `define' ignored
test -abc -LDFLAGS "-Wl 

我试着用单引号,但没有用。有人能帮我解决这个问题吗?

如果文件中有逗号,这些逗号将被解释为参数分隔符。在确定define的自变量之前插入include替换。

使用单引号是正确的——那么include将在输出中进行处理。例如:

define(`TEST', `include(file1)')
TEST

在我的机器上工作。(请注意,更好的解决方案是在file1周围添加引号(。

最新更新