VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1569|回复: 2

确定变参函数的变参个数

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-29 13:40:02 | 显示全部楼层 |阅读模式
如下: 一个变参函数,
       variable 是我预先知道的可变参数的参数个数(从数据库里取的)
        void add_Log_Msg(int log_msg_macro,int uid,char* sn,...)
       {
         va_start(vp, sn);
        variable = spLogsMsg->variableNum;
        if(variable > 0)
        {
                for(i = 0;i<variable;i++)
                {
                        s_varible_value[i] = va_arg(vp, char *);       
                }       
        }
        va_end(vp);
         ......
       }
     我根据variable来确定取几个变参,当外部如果少传了参数过来
,因为程序不知道还是会去取,但是这个参数不存在,导致程序crash了。
请问如何来解决这个问题呢?

回复

使用道具 举报

0

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-5-3 17:30:01 | 显示全部楼层
没法解决,必须传递正确的参数
没必要用变参,将参数用指定分隔符连成一字符串传递也很方便
回复

使用道具 举报

0

主题

2

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-30 13:15:01 | 显示全部楼层
用结束符呗,找个特殊值作结束符,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表