先前搞Java,现转C,突然很想念OO,今天用C搞了下。
如果换成如下结构体,laugh函数参数换成全动态的。
这函数要如何实现?
这函数里要如何取到那个args?
#include <stdio.h>
//模拟类
typedef struct man
{
char *name;
void sleep(int time)
{
printf("%s sleep for %d minutes.\n", this->name, time);
};
void (*laugh)(char *name, ...);
}MAN;
void laugh(char *name, ...);
void main(void)
{
MAN lili;
lili.name = "Lili";
lili.sleep(9);
lili.laugh = &laugh;
lili.laugh("Lucy", 4);
}
void laugh(char *name, ...)
{
va_list args;
args = (va_list)&name + sizeof(name);
printf("%s laugh for %d minutes!\n", name, (int)args[0]);
}
如果换成如下结构体,laugh函数参数换成全动态的。
typedef struct man
{
char *name;
void sleep(int time)
{
printf("%s sleep for %d minutes.\n", this->name, time);
};
void (*laugh)(...);
}MAN;
这函数要如何实现?
void laugh(...)
{
va_list args;
args = ???;//如何赋值?
printf("%s laugh for %d minutes!\n", (char*)args[0], (int)args[1]);
}
这函数里要如何取到那个args?