stdarg建议

作者&投稿:鲁残 (若有异议请与网页底部的电邮联系)
~ 在C++编程环境中,我们建议尽量避免使用stdarg.h中的可变参数方法。这种方法存在一些潜在的问题,使用类或者重载函数可以提供更安全、更易于理解和维护的解决方案。类可以更好地封装数据和行为,而重载则可以根据不同的参数类型提供不同的功能,从而避免可能出现的漏洞。

举个例子,如果你需要计算一组可变参数的平均值,通常可以考虑用其他方式实现。下面是使用类和重载的一个替代方案:

首先,我们可以定义一个类来存储和处理数据:

class AverageCalculator {
public:
float calculateAverage(int count, ...) {
va_list args;
float sum = 0;
va_start(args, count);
for (int i = 0; i < count; ++i) {
sum += va_arg(args, float);
}
va_end(args);
return sum / count;
}
};

通过这种方式,代码更加清晰,也更容易理解和维护。当然,具体选择哪种方法取决于你的项目需求和设计原则。总之,尽量避免直接使用stdarg.h,因为它可能会引入不必要的复杂性和潜在问题。

感谢大家的阅读,以上是关于如何在C++中避免stdarg.h的建议。ELF原创内容,如需引用,请务必注明出处。


落地音箱有哪些品牌
2、Bose:Bose公司由美国麻省理工学院电子工程教授AmarG.Bose博士创建于1964年,是世界上最早的扬声器生产商之一,也是业内“原音重现技术”的革新者。3、漫步者音响:EDIFIER漫步者企业1996年创立于北京,多年来专注于音频技术的研究开发与产品应用,目前已发展成为以专业多媒体音响和家用音响为核心产品,以精湛的电声技术、...

谁能给我一个400行左右的程序,什么的都可以
<td><br><div class="pad10L" style="word-break: break-all; word-wrap: break-word;">如果您想有更多的贴吧功能,<script> login_str="http:\/\/passport.baidu.com\/?login&tpl=tb&u="+escape(window.location.href)+"&aid=6";res_str="http:\/\/passport.baidu.com\/?reg&tpl=tb&u="+escape(...

如何使用ninja快速编译LLVM和Clang
bool StaticLibgcc = Args.hasArg(options::OPT_static_libgcc) ||Args.hasArg(options::OPT_static);+++if (!D.CCCIsCXX())- CmdArgs.push_back("-lgcc");+ if (Args.hasArg(options::OPT_fnolibgcc)) {+ CmdArgs.push_back("--as-needed");+ CmdArgs.push_back("-lunwind");+ CmdArgs....

js中cell可以显示单元格的内容,如果单元格是这样的<td><input...
input 加个id就可以了,如:<td><input type="text" id="t1"><\/td> 然后js里用:document.getElementById("t1").value 来取得input的值

货币符号代表什么意思?
阿根廷 阿根廷比索 Argentine Peso Arg.P. ARP 1ARP=100 centavos(分) 巴拉圭 巴拉圭瓜拉尼 Paraguayan Guarani Guars. PYG 1PYG=100 centimes(分) 乌拉圭 乌拉圭新比索 New Uruguayan Peso N.$ UYP 1UYP=100 centesimos(分) 非洲 货币名称 货币符号 辅币进位制 中文 英文 原有旧符号 标准符号 埃及 埃及镑...

大灵通基站的工作电压、发射功率、功耗是多少?
SCDMA系统,俗称“大灵通”,脱胎于我国具有自主知识产权的3G技术TD-SCDMA。它融合了智能天线、同步码分多址、软件无线电及全质量话音压缩编码等先进技术,在技术层面上全面超过了小灵通系统,具有辐射小、保密性好、通话质量高和不易掉线等优点,目前在我国市场特别是“村村通”工程中正稳步发展。随着3G系统...

高分求助C#
<a href="..\/news\/news_content.htm"><font color="#FFFFFF" size="2">综合信息<\/font><\/a><\/TD> <TD width="12%" align="center" bgcolor="#076D26" bordercolor="#076D26"> <a href="..\/service\/chinamail_01.htm"><font color="#FFFFFF" size="2">邮政业务<\/font><\/a><\/TD>...

加网易邮箱编辑器后,如何用javascript提取输入内容?
应该用这个 Editor.document.body.innerHTML 获取内容,你可以用这个语句测试 <form onsubmit="alert(Editor.document.body.innerHTML);" ...> 如果希望把数据反馈给你的email_new.asp,你需要在<form>里面添加onsubmit代码:<form onsubmit="document.emailform.txtEmailContent.value=Editor.document.body...

ajax 获取数据之后如何遍历到表格中?
.ajax({ url:"\/compute\/",type:"get",success: function(arg) { .each(arg,function(i,e){ ("td.name").eq(i).text(e.fields.title);});} });

Form表单上传文件(type="file")的使用
public class Filter01 implements Filter{ @Override public void destroy() { } @Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { HttpServletRequest request= (HttpServletRequest)arg0; HttpServletResponse response=(...

广阳区15154154098: stdarg.h中的内容(那三个函数的用法) -
西峡复方: 首先注意,va_list是一个类型,而va_start va_arg va_end (以及C99的va_copy)一定是宏.其次,这些东西用于辅助构建可变参数函数:#include void foo(int n,...

广阳区15154154098: 如何对系统的输出进行编码?为什么 -
西峡复方: Unicode编码在计算机科学领域中,Unicode(统一码、万国码、单一码、标准万国码)是业界的一种标准,它可以使电脑得以呈现世界上数十种文字的系统.Unicode是基于通用字符集(Universal Character Set)的标准来发展,并且同时也以...

广阳区15154154098: 头文件 stdarg.h的用法 -
西峡复方: 这个是我以前的收藏 @echo off 从本行开始关闭回显.提示符的显示使屏幕只留下光标 echo off 从下一行开始关闭回显. 重新出现 @ 关闭单行回显 @echo on 从本行开始打开回显 echo on 从下一行开始发开回显 ----------------------------------------------...

广阳区15154154098: C语言不定参数个数在自定义函数中的使用
西峡复方: #include <stdio.h> #include <stdarg.h> void f1(int a,...) { va_list va; va_start(va,a); int b = va_arg(va,int); int *c = va_arg(va, int *); printf("%d %d %d\n",a,b,*c);va_end(va); } void main() { int a=1,b=2,c=3; f1(a,b,&c); } 关于不定参数函数的用法,2...

广阳区15154154098: VC中自定义函数如何有多种输入格式? -
西峡复方: 采用C语言编程的时候,函数中形式参数的数目通常是确定的,在调用时要依次给出与形式参数对应的所有实际参数.但在某些情况下希望函数的参数个数可以根据需要确定.典型的例子有大家熟悉的函数printf()、scanf()和系统调用execl()等...

广阳区15154154098: linuxmint /usr/include文件丢失怎么回事 -
西峡复方: 可执行文件里都是机器码加一些调试信息,看不到头文件信息的.你说的生成包含头文件的列表确实是有,是gcc的选项,'-M',必须在编译时给出.比如说你要看temp.c应用了什么头文件,可以如下使用:$ gcc -M -c temp.c temp.o: temp.c ...

广阳区15154154098: stdarg.h 可变参数谁能给我个详解,我英文不好,请勿转载网上的,我网上搜了一天不懂
西峡复方: #include int max(int cnt, ...){ va_list v; // 声明va_list型变量v,用以保存可变参数列表 va_start(v,cnt); // 指明可变参数列表的开始:在参数cnt后面的 int i; int maxvalue = va_arg(v, int); // 从参数表中取出一个int类型参数 for (i=1; imaxvalue) ...

广阳区15154154098: C语言中stdarg宏定义 -
西峡复方: 宏定义在C中用的比较广泛,你可以在函数定义之前定义它

广阳区15154154098: c语言中的头文件大全及其作用?
西峡复方: STDLIB.H 说明一些常用的子程序:转换子程序、搜索/ 排序子程序等. FCNTL.H 定义在与open库子程序连接时的符号常量. IO.H 包含低级I/O子程序的结构和说明. 其它的如下: ALLOC.H 说明内存管理函数(分配、释放等). ASSERT.H ...

广阳区15154154098: scanf("%d%d",p1,p2); 这边P1和P2都是指针变量(即地址),程序运行时要输入的却是整型数,不明白为什么? -
西峡复方: 那个是整型存放到 p1 p2 所指向的内存地址,这个意思,交换地址实际上也就是交换了指向的内容.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网