, 당신은 같은 헤더 파일의 여러 포함 방지 할 수 있습니다 : 나는 M4에서 같은 일을 할 수있는 방법m4 매크로 파일 include에 ifdef 가드를 어떻게 할 수 있습니까? C 헤더 파일의 경우
#ifndef MY_FOO_H
#define MY_FOO_H
[...]
#endif
을 같은 동일한 파일에 여러 include()
매크로 호출 만에 내용을 일으킬 것이다 한 번 포함 되나요?
은 특히, 내가 changequote
(나는 dnl
의 내 코드를 복잡하게하지 것이다) 매크로를 사용하는 것 IFDEF 가드 싶지 : 나는 다음 작업을 수행 할 때 원래
을 여러 흠도 여전히 따옴표를 손상 :
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'
정상적인 상황에서 작동한다고 생각합니다. (제 질문에 답변 해 주셔서 감사합니다!). 키커는 m4가을 해석 할 수 없기 때문에 약간의 미친 짓을하고있는 것입니다. 다음 도구는 해당 문자를 유효한 입력으로 사용하기 때문에 사용자가 다른 문자열 이스케이프를하지 않아도되기를 바랍니다. .나는'changequote' 명령을 수행하는 파일을 임포트하려고하는데,'changequote' 명령은 오직 하나의 명령 만 실행합니다. 어쨌든, 나는 또 다른 질문을 게시하고 정말로 미친 오래된 m4 해커를 준설하게 만들 것입니다. –
위의 내용은 changequote 파일에서 사용하십시오. – geekosaur
아, 너는 도전장을 던져 버렸다. 코드를 게시하고 당신이 그것을 황폐화시킬 수 있는지 보도록하겠습니다 :-) –