none
__cdecl이 무엇인가요? RRS feed

  • 질문

  • int __cdecl printf (
            const char *format,
            ...
            )
    /*
     * stdout 'PRINT', 'F'ormatted
     */
    {
            va_list arglist;
            int buffing;
            int retval;

            _VALIDATE_RETURN( (format != NULL), EINVAL, -1);

            va_start(arglist, format);

            _lock_str2(1, stdout);
            __try {

            buffing = _stbuf(stdout);

            retval = _output_l(stdout,format,NULL,arglist);

            _ftbuf(buffing, stdout);

            }
            __finally {
                _unlock_str2(1, stdout);
            }

            return(retval);
    }

    ------------------------------------------------------------------------------------

    printf의 소스입니다.

    제가 함수를 배울때는,

    반환자료형 함수 이름(매개변수)

    {

    }

    의 형태라고 배웠는데..

    위쪽에 __cdcel이 무엇인지 알고 싶습니다.


    제가 C#과 JAVA를 하다가 C++을 공부하고 있는데요

    try,catch,finally가 위에서는 __try,__catch,__finally로 되어있고

    다른 변수들에도 언더바가 있는것으로 보이는데..

    혹시 언더바의 의미가 무엇인지 알려주실수있으신가요?


    • 편집됨 donghyunKim 2015년 7월 27일 월요일 오전 5:24
    2015년 7월 27일 월요일 오전 5:22

답변

  • cdecl은 함수가 호출될때 발생하는 스택프레임에 대한 방식을 의미합니다. 이 내용을 제가 정리해둔 글이 있으니 아래에 링크해드린 글을 참고하시기 바랍니다~

    http://www.tipssoft.com/bulletin/tb.php/FAQ/625

    그리고 키워드나 함수앞에 _ 를 붙이는건 표준에 대한 호환성입니다. 보통 언어들은 표준화되어 있는데, 해당 언어를 실제로 구현하는 회사에서 해당 키워드나 함수에 새로운 기능을 추가하거나 변경했으면 _ 를 하나 붙이게 됩니다. _ 이 두개 붙은 경우는 기본 기능에서 확장이 더 많이 되었다고 보시면 됩니다.

    • 답변으로 표시됨 donghyunKim 2015년 7월 27일 월요일 오전 7:09
    2015년 7월 27일 월요일 오전 5:31
    중재자

모든 응답

  • cdecl은 함수가 호출될때 발생하는 스택프레임에 대한 방식을 의미합니다. 이 내용을 제가 정리해둔 글이 있으니 아래에 링크해드린 글을 참고하시기 바랍니다~

    http://www.tipssoft.com/bulletin/tb.php/FAQ/625

    그리고 키워드나 함수앞에 _ 를 붙이는건 표준에 대한 호환성입니다. 보통 언어들은 표준화되어 있는데, 해당 언어를 실제로 구현하는 회사에서 해당 키워드나 함수에 새로운 기능을 추가하거나 변경했으면 _ 를 하나 붙이게 됩니다. _ 이 두개 붙은 경우는 기본 기능에서 확장이 더 많이 되었다고 보시면 됩니다.

    • 답변으로 표시됨 donghyunKim 2015년 7월 27일 월요일 오전 7:09
    2015년 7월 27일 월요일 오전 5:31
    중재자
  • 감사합니다 ㅎㅎ

    덕분에 팁스웨어라는 곳을 알게되어 행복합니다

    더 많이 공부하고싶어요 ㅎㅎ

    2015년 7월 27일 월요일 오전 7:09