printf 계열 함수는 어떻게 만드는가? Study+more

대충 printf계열 (즉, 동적인 갯수의 매개변수를 넘겨받는) 함수의 한가지 예이다. (간단 버전임..ㅎㅎ)

당연하게도, 내가 짠게 아니다. ... 인터넷에 떠도는걸 긁어온건데, (정확히는 kldp) 나중에 비슷한 함수 만들때 참조하려고 올려둔다. (저작권 있는거 아니냐고 할수도 있겠지만.. 인터넷에 돌고 도는 흔하디 흔한 예제일 뿐이다...- .-)

-물론, 원 저작자가 삭제를 요청하시면 즉시 삭제합니다. 말씀만 하세요 ^^;

void PDEBUG(char *fmt, ...)
{
va_list ap ;
char s[128];

va_start(ap, fmt);

#ifdef LINUX
vsnprintf(s, sizeof(s), fmt, ap);
printk(DEBUG_MSG_DISPLAY_LEVEL ALL_MSG "%s", s);
#endif

#ifdef W2K
_vsnprintf(s, sizeof(s), fmt, ap);
KdPrint((ALL_MSG));
KdPrint(("%s", s));
#endif

va_end(ap);

}


트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://handmade.egloos.com/tb/4957046 [도움말]

덧글

  • 써니 2009/05/24 14:22 # 답글

    내가 느끼기에는 전혀 단순하지 않아...

    간단히 하나의 문제점을 들추자면, W2K 혹은 LINUX 선언은 어디서 이루어지는데...?
    이거 복사해다 그냥 쓰는 사람 중에 진짜 초보라면 컴파일 에러는 안나는데,
    아무 것도 실행되지 않는 현상을 마주치는 경우도 있지 않을런지...

    원작자가 잘못 만들었다는 건 아니고, 부연 설명이라던가, 최소 조건을 명시하지 않은
    코드 블록은 자칫 엄한 사람을 괴롭힐 수도 있는 거라고...

    그러니까, 승네군이 '간단하다고 표현'한게 자칫 누군가가 승네군을 저주하게 만들지도
    모른다는 얘기지... 반론 있다면 언제든지~ 환영!
  • 진군 2009/05/24 22:36 # 삭제 답글

    승네군이 '간단하다고 표현'한게 자칫 누군가가 승네군을 저주하고 있다는 뜻이지...
    반론 있다면 언제든지~ 환영!
  • 써니 2009/05/25 11:27 #

    누구세요? 덧글을 복사해서 재활용하는 건 처음봐서.. 당황스럽네요.
  • 승네군 2009/05/25 01:53 # 답글

    음... 반론은 아니구요.
    자신에게 꼭 필요한 것이라면 모르면 모른다고, 알려달라고 혹은 이상하다고 덧글로 남기는게 정상적인 상황일것 같구요. (사람들의 행동 양식이나 패턴까지 예상해서 글을 쓰는건 전문적이거나 심하게 친절한블로거나 하는 멋진 행동이죠..ㅎㅎ, 전 심하게 친절하지도 전문적이지도 않으니까요..ㅎㅎ;)

    그리고, 위 소스에서 주의해서 봐야할건 va_list 밖에 없다고 생각되고, 다른 부분은 c문법(syntax)을 배웠다면 대충 어떤 의미인지는 파악이 되지 않았을까 하는 생각도 들었구요.
    (문법 배우는중에 printf계열 함수나 define문등을 한번도 안써봤다면, 그건 또 그것 나름대로 언어를 학습한 사람에게 문제가 있지 않을까요? 하긴, 저도 C++은 보다가 포기했습니다만..T^T)
  • 써니 2009/05/25 11:27 #

    '친절할 필요'는 없지만, 최소한의 예의(?) 혹은 배려가 있다면 환영받지 않을런지..
    (강요는 아니고~)

    문제는 이런 글을 '참고'하는 사람 중에 저 코드를 복사해다 쓰는 사람은
    대부분 '제대로 C언어를 학습'하지 않은 사람들이 대부분이라는 거지.

    승네군을 탓하는게 아니라, 네이년 지식인에 넘쳐나는 동작하지도 않거나,
    전혀 틀린 설명을 복사해다 써버리는 사람들 때문에 우려해서 한 말이야.

    그러니까, 승네군이 그러라고 하지도 않았는데 저 코드를 무단 복사해다
    지식인에 답변이라고 올리는 사람들이 있다는 거지. 하긴 누굴 탓하겠어...
  • 승네군 2009/05/25 11:35 # 삭제 답글

    저 진군이라는 친구는, 제가 생각하기에 저랑 말장난 하기 좋아하는 제 친구중에 한명인듯 합니다. 그냥 장난스러운 마음에 한거 같으니, 마음에 두시지 않으셨으면 좋겠습니다.^^;

    ...뭐 그렇게 되는건가요. (지식인이라... 레포트 월드가 아니라 차라리 다행일지도요..ㅎㅎ;)
  • 써니 2009/05/26 11:22 #

    현장에서 일하다 보면, 버젓이 지식인에서 코드를 검색하는 황당한 부류를 보게 되거든...
    네이버를 믿는다는 게 참... 가당찮은 일인데... 말야.
    대학생은 아니니 레포트 월드는 검색 안하지...
  • 승네군 2009/05/26 12:03 #

    써니// 왠지 뜨끔...;; (하지만, 그짓했던 프로젝트는 다른 팀으로 이관되서.. ㅎㅎ;)

    확실히, 일정은 끝나가는데(혹은 기간이 얼마 안되는데) 처음 써보는 라이브러리/프레임웍 같은경우에는 뒤져서 나오면 그거라도 쓰게되더라구요. (물론, 이해해서 쓰는게 천번만번 옳은일이고 맞는 행동이지만요...;;)

    근데, 저런 기본적인 c를 가져가면서 이해를 못한다.. 그럴수 있나? 싶은데요..ㅎㅎ; (va_list 제외;)
    (이게 뭐.. 연산자 우선순위 따져서 비트연산으로 장난쳐놓은것도 아니고...)
  • 써니 2009/05/27 01:58 #

    C 언어 그까이꺼 대충 공부하고 취업하는 사람들도 많아...
    그노무 6개월 학원 코스들이 문제인거지.
    물론, 컴공 나왔다는 애들 중에도 있기는 하더라.

    자바나 웹 쪽은 뭐... 한숨만 나올 뿐이고...
  • 진군 2009/05/26 02:02 # 삭제 답글


    그냥 승네한테 장난한건데
    죄송합니다. ^^;
  • 써니 2009/05/26 11:23 #

    좀 당황스러운 거니까.. 사과까지 하시니 제가 송구스럽습니다? ^^;
덧글 입력 영역