假设我有一个包含宏定义的文件tools.m4
:
define([YEAR_2_DIGITS], substr(YEAR, [2], [2]))
我想在另一个文件中使用query.sql
:
changequote(`[', `]')
include(./tools.m4)
define([YEAR], [2017])
YEAR_2_DIGITS
但很明显它会回来:
$ m4 query.sql
AR
而不是CCD_ 3。
有没有一种变通方法可以让这个结构发挥作用?
我终于做到了。必须引用第一个定义的正文:
define([YEAR_2_DIGITS], [substr(YEAR, [2], [2])])