[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13. 그외의 매크로들

이 장에서는 이전의 장에서 설명하지 않은 다양한 내장함수들을 소개한다.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.1 Printing error messages

errprint를 사용하면 간단하게 에러 메시지를 출력할 수 있다.

 
errprint(message, ...)

이것은 간단하게 message를 프린트 하고 나머지 인자를 표준에러출력으로 보낸다.

errprint는 확장되지 않는다.

 
errprint(`Illegal arguments to forloop
')
error-->Illegal arguments to forloop
⇒

지겨운 뉴라인은 자동적으로 찍히지는 않는다. 따라서 위의 예에서와 같이 뉴 라인을 인자의 일부분으로 제공해야 한다. (BSD m4는 각각의 errprint 호출 다음에 뉴라인문자를 추가한다. )

에러의 위치를 알려주도록 하려면 두 개의 내장된 유틸리티를 사용하면 된다.

 
__file__
__line__

이것은 현재 입력파일의 이름과 현재 입력라인 번호로 확장된다.

 
errprint(`m4:'__file__:__line__: `Input error
')
error-->m4:56.errprint:2: Input error
⇒

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.2 m4 종료

전체 입력을 읽기전에 m4를 종료하는 것이 필요하다면, m4exit를 실행하면 된다.

 
m4exit(opt code)

종료 코드를 code로 하고 m4를 종료한다. code가 없다면 종료코드는 0이다.

 
define(`fatal_error', `errprint(`m4: '__file__: __line__`: fatal error: $*
')m4exit(1)')
⇒
fatal_error(`This is a BAD one, buster')
error-->m4: 57.m4exit: 5: fatal error: This is a BAD one, buster

이 매크로가 호출되고 난 다음에는 m4는 종료코드 1을 가질 것이다. 이 매크 로는 에러 종료를 보여주기 위한 것이다. 위에서는 보통 사용되는 텍스트를 저장 한다던지, undivert되지 않은 것을 divert 한다던지 하는 종료 프로시저가 따라오 지 않았다 (see section 입력을 저장하기).


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Autobuild on September 28, 2013 using texi2html 1.82.