我有一个C编程问题:我想编写一个带有变量参数列表的函数,其中每个参数的特定类型都不知道 - 只有它的大小(以字节为单位).这意味着,如果我想获得一个int-Parameter,我(之前的某个地方)定义:将有一个带有sizeof(int)的参数,该参数由回调函数xyz处理.
我的变量参数函数现在应该从其调用中收集所有信息,真正的数据类型特定操作(也可以是用户定义的数据类型)仅通过回调函数进行处理.
在标准的va_arg函数中,不可能说"从我的参数列表中获取X字节的值",所以我想这样做.在这种情况下,我的数据类型是双倍的,但它可以是任何其他数量的字节(甚至是可变的字节).
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
int fn( int anz, ... )
{
char* p;
int i;
int j;
va_list args;
char* val;
char* valp;
int size = sizeof( double );
va_start( args, anz );
val = malloc( size );
for( i = 0; i < anz; i++ )
{
memcpy( val, args, size );
args += size;
printf( "%lf\n", *( (double*)val ) );
}
va_end( args );
}
int main()
{
fn( 1, (double)234.2 …Run Code Online (Sandbox Code Playgroud)