CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): HellCat (아가남편)
날 짜 (Date): 1996년07월19일(금) 06시14분41초 KDT
제 목(Title): re: stdarg (was va_start)



우선 보여주신 예제에서
void error(va_alist)
                 va_dcl
{
va_list args;
char *fmt;
va_start(args);
fmt=va_args(args, char *);
vfprintf( stderr, fmt, args);
va_end(args);
}

이렇게 주셨는데요.

이건 옛날 꺼 <varargs.h> 를 include 해서 쓰실때 경우인데.

이걸 <stdarg.h> 로 바꾸면

void error (char *fmt, ...)
{
  va_list args;

  va_start (args, fmt);
  vfprintf (stderr, fmt, args);
  va_end (args);
}

이게 끝이네요.

물론 위에 원래 함수에 조금 오버헤드지만 더하면

  if (fmt == NULL || *fmt == '\0')
    return;

을 va_start 하기 전에 더해주면 좋겠지요.

--- hellcat@korea.slip.umd.edu
  if (t_snddis(KIDS[i].fd, (struct t_call *)NULL) == -1)
    { t_error("날 죽여라!!"); longjmp ((jmp_buf) HELL, -1); }
--- dkim@surecom.com
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.