如何知道我的参数是char还是带有varargs的char *

时间:2014-11-09 19:08:48

标签: c variadic-functions

我有一个带两个参数的函数,第一个是char *第二个可以是char或char *

然后,这就是我想要做的事情

void   my_function(char  *arg1, XXXX arg2)
{
 if (XXXX == char)
        //convert arg2 in char*
  do_something_else(arg2);
}

问题是,我不知道我怎么能得到arg2的类型

1 个答案:

答案 0 :(得分:1)

您可以使用另一个选择所选类型的成员传递包含您的类型的结构。

struct my
{
    char* s ;
    char c ;
    int type ;
}

然后使用检查做正确的事情:

if( m.type == 1 )
{
   m.s = ... //do something with char*
}
else if( m.type == 2 )
{
   m.c = ... //do something with char
}

如果你坚持使用变量参数函数,那么使用printf()使用的方法。第一个参数包含每个传递的可选参数的数量和类型。