에 의해 제공된 매크로 이름 목록을 반복할 수 있습니까 dumpdef
? 이름에 특정 접두사가 있는 특정 매크로를 처리하고 싶습니다.
답변1
dumpdef
매크로 목록과 해당 정의를 파일에 기록합니다. 존재하다표준 m4, 파일은 표준 오류이므로 이를 얻는 유일한 방법은 m4 스크립트 외부에서 리디렉션을 사용하는 것입니다. GNU m4는 다음을 제공합니다.debugfile
매크로는 를 사용하여 다시 읽을 수 있는 파일로 출력을 리디렉션 input
하지만 autoconf의 m4의 특정 구현에 의존할 수는 없습니다.
출력을 얻는 데 성공하더라도 dumpdef
출력 형식은 지정되지 않습니다. index
and 를 사용하여 substr
문자열을 줄로 나눌 수 있지만 이는 구현이 한 줄에 하나의 매크로를 인쇄한다고 가정합니다. 이는 또한 매크로 값에 개행이 포함될 수 있다는 보장은 없습니다. GNU m4를 사용하면 출력이 모호해 차이를 알 수 없습니다.
define(`foo', `hello')
define(`fooo', `world')
~에서
define(`foo', `hello
fooo: world')
m4 구현이 한 줄에 하나의 매크로를 인쇄하고 이름에 콜론을 추가한다고 가정하면 이 방법으로 잠재적인 매크로 이름을 수집하고 이를 사용하여 ifdef
실제로 매크로 이름인지 확인할 수 있습니다. 그러나 동일한 디버그 인쇄 형식을 사용하지 않는 구현의 영향을 받습니다.
문제를 해결하는 가장 좋은 방법은 아마도 m4 외부에 있을 것입니다.