关于函数参数
the C programming language 上说
采用省略号“,···”表示函数变长参数表的做法也是ANSI标准中新引入的
#include <stdarg.h>void func_with_var_args(int argc, ...){ va_list va; const char *s; if (argc == 1) { va_start(va, argc); s = va_arg(va, char *); printf("%s\n", s); va_end(va); } else if (argc == 2) { va_start(va, argc); s = va_arg(va, char *); printf("%s", s); printf("%d\n", va_arg(va, int)); va_end(va); }}int main(void){ func_with_var_args(1, "VarArgs 11"); func_with_var_args(2, "VarArgs 21, ", 22); getch(); return 0;}
[解决办法]
为了兼容而弄的东西,自己写代码的时候还是要慎用~
[解决办法]
其实是可以知道参数的个数的,但是就是不确定参数的类型
[解决办法]
自己可以写不定参数的函数,要注意这么几点:必须是_cdecl,调用者负责栈平衡。在程序里面可以通过va_list宏读取参数,头文件<stdarg.h>,我建议使用内敛汇编,效率高。
在class里面成员函数如果是不定参数的话,this指针是通过压栈传入的,位置相当于第一个参数左边。
[解决办法]
应该函数的参数的个数和类型都可以是未知的。。。