小编Jan*_*Jan的帖子

具有未知类型名称的va_list - 只知道字节大小!

我有一个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)

c variadic-functions

5
推荐指数
1
解决办法
7086
查看次数

标签 统计

c ×1

variadic-functions ×1