본문 바로가기
Education/Bit 18th

[최종프로젝트] RETAILMSG란?

by ★용호★ 2010. 1. 14.

플랫폼 빌더 내의 PUBLIC나 PLATFORM쪽의 소스들을 보게 되면 'DEBUGMSG()'라는 녀석을 자주 볼 수 있다. 이녀석은 디버깅 모드로 빌딩을 했을 때 디버깅 메시지를 볼 수 있도록 해주는 녀석이다. 하지만.. 디버깅 모드로 빌드를 하게되면.. 용량도 엄청(?)커지게 되고.. 느리지고.. 뭐 그래서 잘 하지 않을 것이다.

그렇다면.. 릴리즈 모드로 빌드를 해서 디버깅 메시지를 어떻게 확인을 할 수 있을까? -_-
그래서 'RETAILMSG()'라는 녀석이 존재한다.
'RETAILMSG()'라는 녀석은 릴리즈 모드로 빌드를 했을 때 디버깅 모드의 'DEBUGMSG()'와 마찬가지로 디버깅 메시지를 볼 수 있도록 해주는 녀석이다.

RETAILMSG()의 문법은 다음과 같다.
RETAILMSG( Expression, Message)
  - Expression : Boolean expression used to determine if the message would be output
  - Message   : Expression to be printed using printf format style.

Expression는 0 혹은 0이 아닌 다른 것으로써, 0이 아니면 Message의 내용을 출력하게 된다..
Message는 일반적인 printf와 같은 포맷으로 동작을하고, Message의 내용이 디버깅 메시지로 출력이 된다.

주의할 사항은 RETAILMSG는 2개의 인자(Expression, Message)만을 받기 때문에 두번째 인자를 주의해서 사용해야 한다.
예를 들면 다음과 같다.
예...
       RETAILMSG(1, (TEXT("This is Test Message...")));
       Expression : 1
       Message   : (TEXT("This is Test Message..."))
또 다른 예...
       RETAILMSG(1, (TEXT("This value is %x\r\n"), value));
       Expression : 1
       Message   : (TEXT("This value is %x\r\n"), value)

위의 예에서 보는 것처럼 Message에 들어갈 내용을 괄호로 묶어 하나의 인수처럼 사용을 해야한다. 괄호로 묶지 않고 일반 C에서 사용하는 printf처럼("xxx %d", value) 사용하면 에러가 발생한다.

댓글