你为什么要在这里增加?
Why would you increment here?
函数来自这里:http://v6shell.org/history/if.c
或使用语法高亮显示:http://pastebin.com/bj0Hvfrw
char *nxtarg() {
if (ap>ac) return(0*ap++);
return(av[ap++]);
}
这是returns下一个参数的函数。 ac 是 argv 中的参数个数,ap 是当前参数的索引。
所以我认为 if ( ap > ac )
我们正在测试是否还有更多参数。我的问题来了:
如果 ap 已经大于 ac,那么为什么要递增 ap [ return( 0 * ap++ ) ],因此没有更多参数?
我只会返回 (0)。 直接return(0)会有什么问题?能举个例子吗?
注意这是旧的 K&R-C。
文件中有几个地方看起来像这样:
if (eq(nxtarg(), "!"))
return(!e3());
ap--;
伪代码:
if nxtarg returns some string { do something }
else // nxtarg returns 0 or another string
{
// probably they want to test the same argument against another string
ap--;
}
为了实现这一点,他们在任何情况下都会递增 ap
。
根据要求,这是在 nxtarg
不递增 ap
返回 0 的情况下的调用方代码:
char* p = nxtarg();
if ( p != 0 )
{
if (eq(p, "!")) return(!e3());
ap--;
}
// p == 0 - don't decrement ap
函数来自这里:http://v6shell.org/history/if.c
或使用语法高亮显示:http://pastebin.com/bj0Hvfrw
char *nxtarg() {
if (ap>ac) return(0*ap++);
return(av[ap++]);
}
这是returns下一个参数的函数。 ac 是 argv 中的参数个数,ap 是当前参数的索引。
所以我认为 if ( ap > ac )
我们正在测试是否还有更多参数。我的问题来了:
如果 ap 已经大于 ac,那么为什么要递增 ap [ return( 0 * ap++ ) ],因此没有更多参数?
我只会返回 (0)。 直接return(0)会有什么问题?能举个例子吗?
注意这是旧的 K&R-C。
文件中有几个地方看起来像这样:
if (eq(nxtarg(), "!"))
return(!e3());
ap--;
伪代码:
if nxtarg returns some string { do something }
else // nxtarg returns 0 or another string
{
// probably they want to test the same argument against another string
ap--;
}
为了实现这一点,他们在任何情况下都会递增 ap
。
根据要求,这是在 nxtarg
不递增 ap
返回 0 的情况下的调用方代码:
char* p = nxtarg();
if ( p != 0 )
{
if (eq(p, "!")) return(!e3());
ap--;
}
// p == 0 - don't decrement ap