2014-04-03 3 views
1

저는 printf을 C로 코딩했습니다. 그래서 각 변수 유형에 대한 함수를 호출하므로, 모든 변수를 .h로 프로토 타이핑했습니다. 하지만이 오류가 있습니다 :Recoding printf; .h 파일의 오류 : 컴파일러가 va_list 유형을 인식하지 못합니다.

main.h:22:13: error: unknown type name ‘va_list’ 
    int dispdi(va_list ap); 

솔루션?

+6

# # 님을 포함 했습니까? –

+0

.h 파일에서? – Pivot

+0

네, 왜 ...? – alk

답변

1

경우

당신은 파일이 뭔가 같이 할 수있다 헤더.

#ifndef _VA_LIST_DEFINED 
#ifdef _M_CEE_PURE 
typedef System::ArgIterator va_list; 
#else 
typedef char * va_list; 
#endif 
#define _VA_LIST_DEFINED 
#endif 

그냥 당신이 당신의 적이있는을 사용하는 지금이 .H을 포함한다 : 시간은 적어도 유사한에보고 당신은 표준 C를 사용하는 경우 printf와

그러나

의 이온,의 va_list, va_start를, va_arg를 등을 위해 정의합니다. 그런 다음 stdarg.h를 간단히 포함 시키십시오. 어느 경우에서

이 다음은 간단한 가변 함수의 예이다 (되지 printf와, 단순한 예) 사용 va_ 매크로 : 상기 판독 들어

#include <stdarg.h> 

void variadic_function(int Param, ...) 
{ 
    int dslot; 
    va_list params; 
    va_start(params, Param); 
    dslot = va_arg(params, int); 
    va_end(args); 
} 

, this Wiki article 및 해당 링크는 주제를 잘 마무리합니다.

0

va_list 및 친구를 사용하기 전에 stdarg.h 헤더 파일을 포함해야합니다. 다음 내가 정의 (들) 당신이 당신의 생성을 가정 당신의 va_list를 포함하여, 자신의 모든 정의를 작성하는

#include <stdarg.h> 
... 
int my_printf (const char *format, ...); 
... 
관련 문제