通常C语言中实现可变参数函数的方法,要利用<stdarg.h>的库函数,比如
http://c-faq-chn.sourceforge.net/ccfaq/node261.html
看上去比较繁琐。
今天忽然想到可以借助结构体实现这样的功能。首先根据所有可能用到的参数定义一个结构体,比如
struct par_all { int var_i; int var_j; float var_x; float var_y; char *var_c; char *var_d; ... } myparam;
然后定义函数
myfun(int nargc, struct par_all *mypar) { if (nargc== ...) { do_something(); } else if(nargc==...) ... }
调用时根据需要对myparam中的要用参数赋值,同时设定参数个数nargc,这样函数根据nargc来选用myparam里面的参数。
(当然更一般的方法:未必用int nargc传递参数个数,比如用char flag传递一个字母符号作用选用参数的开关。)
最新评论
10 周 17 小时 前
38 周 4 小时 前
38 周 1 天 前
39 周 5 天 前
46 周 3 天 前
46 周 6 天 前
47 周 3 天 前
1 年 2 周 前
1 年 2 周 前
1 年 11 周 前