如何用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);