如何用c包装EXCEL

如何用c包装EXCEL,c,C,我尝试了两种方法: void func(const char *path, const char *arg0, ...){ va_list args; va_start(args, arg0); execl(path, arg0, args, NULL); va_end(args); } func("/bin/ls", "ls"); 以及: 但经过几次测试后,似乎无法正常工作 我包装可变长度参数的方式有什么问题?execl()是一

我尝试了两种方法:

void func(const char *path, const char *arg0, ...){
        va_list args;
        va_start(args, arg0);
        execl(path, arg0, args, NULL);
        va_end(args);
}
func("/bin/ls", "ls");
以及:

但经过几次测试后,似乎无法正常工作

我包装可变长度参数的方式有什么问题?

execl()
是一个可变函数,因此应该编译它

然而,这是行不通的
execl
要求其每个参数都是
const char*
,即指向字符串的指针。
va_list
不是这样的东西。

execl()
是一个可变函数,因此应该编译它


然而,这是行不通的
execl
要求其每个参数都是
const char*
,即指向字符串的指针。
va_列表
不是这样的东西。

因为你不知道会收到多少个参数,你需要/想要使用
execv
而不是
execl
。您需要遍历参数,检索指向每个字符串开头的指针,并将它们放入数组中。然后将该数组的地址传递给
execv

,因为您不知道将接收多少个参数,所以需要/希望使用
execv
而不是
execl
。您需要遍历参数,检索指向每个字符串开头的指针,并将它们放入数组中。然后将该数组的地址传递给
execv

void func(const char *path, const char *arg0, ...){
        va_list args;
        va_start(args, arg0);
        execl(path, arg0, args);
        va_end(args);
}

func("/bin/ls", "ls", NULL);