Для файлов заголовков C вы можете предотвратить многократное включение файла заголовка, например:
#ifndef MY_FOO_H
#define MY_FOO_H
[...]
#endif
Как я могу сделать то же самое в m4, чтобы несколько вызовов макросов include()
для одного и того же файла приводили к включению содержимого только один раз?
В частности, я хочу сделать защиту ifdef, которая включает использование макроса changequote
(я не буду загромождать свой код dnl
):
Первоначально, когда я делаю следующее, множественные включения все еще портят кавычки:
changequote_file.m4:
ifdef(my_foo_m4,,define(my_foo_m4,1)
changequote([,])
)
changequote_invocation.m4:
include(changequote_file.m4)
After first include invocation:
[I should not have brackets around me]
`I should have normal m4 quotes around me'
include(changequote_file.m4)
After second include invocation:
[I should not have brackets around me]
`I should have normal m4 quotes around me'
Вызывается с m4 changequote_invocation.m4
дает:
After first include invocation:
I should not have brackets around me
`I should have normal m4 quotes around me'
After second include invocation:
[I should not have brackets around me]
`I should have normal m4 quotes around me'