关于可变参数的问题
今天看了可变参数,void max(int n,...),也大概知道了他的实现,但是我有一点很迷惑,就是:可不可以将 int n也省去了,就是变成 int max(...),但是va_start宏又不允许,不知道是不是可以这样用,或者这是完全错误的!大虾们,帮帮忙吧,郁闷死了!
[解决办法]
下面的函数求所有参数之和,约定所有的参数类型为int,且不能为0,最后一个为零表示参数结束,
VC6。VC6以后的就不行了,因为以后的版本在本地变量和ebp值之间加了防溢出的cookie字节。
正如楼上所说,只能在特定的情况下使用。
- C/C++ code
int func(...){ int n=0; int *p=&n; p+=2; while(*p!=0) n+=(*p),p++; return n;}int main(void){ int n=func(2,3,0); printf("%d",n); system("pause"); return 0;}