【发布时间】:2012-08-25 15:17:48
【问题描述】:
也许这是一个魔法问题。我正在尝试创建一个具有以下签名的函数(或等效的 const char *const *args)
void ExecuteJavaVM(char** args){
}
我想模拟execv 如何处理参数数组,您可能知道execv 不需要我们放置数组的最大元素数。它只是神奇地计算我们作为第二个参数传递的数组中的元素数量。
这是 execv 签名。
intptr_t _execv(
const char *cmdname,
const char *const *argv
);
execv 以某种方式设法“计算”数组 argv 中的元素数量。这正是我想要做的。
sizeof 几乎没用,因为数组的数据类型衰减为一个简单的指针,所以sizeof 很可能总是返回 4。
有什么想法吗?有谁知道在哪里可以找到这些 Windows 功能的来源?
【问题讨论】:
-
“它只是神奇地计算了我们作为第二个参数传递的数组中的元素数量。”这是错误的。您阅读手册页了吗?
-
+1。 R. Martinho Fernandes 是正确的,我赞成他/她的回答,但从您引用的签名来看,您从the woefully incomplete MSDN documentation 获取了您的信息。我认为这不值得投反对票。
-
@R.MartinhoFernandes 公平地说,
execv函数的 MSDN 文档没有提到它是一个以 NULL 结尾的数组。 -
@john 是的,我花了一段时间才意识到这是针对 Windows POSIX 仿真的东西。我以为是为了 Cygwin 什么的。 (为此,我将我的答案从引用 Linux 手册页更改为引用 POSIX 文档)。
-
@avd:Windows 可能不是使用 POSIX 的最佳平台