저는 printf
을 C로 코딩했습니다. 그래서 각 변수 유형에 대한 함수를 호출하므로, 모든 변수를 .h로 프로토 타이핑했습니다. 하지만이 오류가 있습니다 :Recoding printf; .h 파일의 오류 : 컴파일러가 va_list 유형을 인식하지 못합니다.
main.h:22:13: error: unknown type name ‘va_list’
int dispdi(va_list ap);
솔루션?
저는 printf
을 C로 코딩했습니다. 그래서 각 변수 유형에 대한 함수를 호출하므로, 모든 변수를 .h로 프로토 타이핑했습니다. 하지만이 오류가 있습니다 :Recoding printf; .h 파일의 오류 : 컴파일러가 va_list 유형을 인식하지 못합니다.
main.h:22:13: error: unknown type name ‘va_list’
int dispdi(va_list ap);
솔루션?
경우
당신은 파일이 뭔가 같이 할 수있다 헤더. 이#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 및 해당 링크는 주제를 잘 마무리합니다.
va_list
및 친구를 사용하기 전에 stdarg.h
헤더 파일을 포함해야합니다. 다음 내가 정의 (들) 당신이 당신의 생성을 가정 당신의 va_list를 포함하여, 자신의 모든 정의를 작성하는
#include <stdarg.h>
...
int my_printf (const char *format, ...);
...
# # 님을 포함 했습니까? –
.h 파일에서? – Pivot
네, 왜 ...? – alk