我在C中記錄了printf
。所以我爲每種類型的變量調用函數,所以我將它們全部原型化成了一個.h文件。但我得到這個錯誤:重新編碼printf; .h文件中的錯誤:編譯器無法識別va_list類型
main.h:22:13: error: unknown type name ‘va_list’
int dispdi(va_list ap);
解決方案?
我在C中記錄了printf
。所以我爲每種類型的變量調用函數,所以我將它們全部原型化成了一個.h文件。但我得到這個錯誤:重新編碼printf; .h文件中的錯誤:編譯器無法識別va_list類型
main.h:22:13: error: unknown type name ‘va_list’
int dispdi(va_list ap);
解決方案?
如果要創建所有的自己的定義,包括va_list的,然後 我假設你在創建的定義(一個或多個)。^h看着至少類似到:
#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以往您使用VERS哪裏printf的
然而的離子,如果您使用標準的C定義的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
頭文件。
你頭文件可能是這樣的:
#include <stdarg.h>
...
int my_printf (const char *format, ...);
...
你有沒有'#include'? –
在.h文件中? – Pivot
是的,爲什麼不...? – alk