我正在用 C 重新编码 printf
。所以我正在为每种类型的变量调用函数,所以我在 .h 中对所有这些变量进行了原型(prototype)化。但是我得到了这个错误:
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
只要在你使用你的 printf 版本的地方包含这个 .h
但是,如果您正在为 va_list、va_start、va_arg 等使用标准 C 定义。 al.,然后简单地包含 stdarg.h。
无论哪种情况,下面是一个使用 va_ 宏的简单可变参数函数示例(不是 printf,只是一个简单示例):
#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及其链接很好地完善了主题。
关于c - 重新编码 printf; .h 文件 : compiler doesn't recognise the va_list type 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22841881/