博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C/C++中用va_start/va_arg/va_end实现可变参数函数的简单例子
阅读量:4486 次
发布时间:2019-06-08

本文共 882 字,大约阅读时间需要 2 分钟。

例子很简单

(1)控制台工程

#include 
#include
int sum(int, ...);int main(){ printf("Sum of 15 and 56 = %d", sum(2, 15, 56) ); return 0;}int sum(int num_args, ...){ int val = 0; va_list ap; int i; va_start(ap, num_args); for(i = 0; i < num_args; i++) { val += va_arg(ap, int); } va_end(ap); return val;}

运行结果:

 

(2)MFC的工程下

BOOL DebugTrace(LPCTSTR lpszFormat,...){    CString szMsg;    va_list argList;    va_start(argList, lpszFormat);        CString para;    while(1)    {        para = va_arg(argList, LPCTSTR);        if(para == "")            break;        AfxMessageBox(para);    }    va_end(argList);            return TRUE;}

调用时

void CVaMFCDemoDlg::OnButton1() {    // TODO: Add your control notification handler code here    DebugTrace("1", "a", "bc", "de", "");}

 参考:

 原理和详细解释:

转载于:https://www.cnblogs.com/hpcpp/p/6400408.html

你可能感兴趣的文章
【导图控】各软件开发版本详解
查看>>
HDU 1533 Going home
查看>>
Extjs面板和布局初探
查看>>
箭头函数
查看>>
SharePoint【ECMAScript对象模型系列】-- 11. Enable/Disable Ribbon上的Button
查看>>
C#委托-怎样理解C#中“委托”的含义和用途
查看>>
Spring数据访问1 - 数据源配置及数据库连接池的概念
查看>>
setting.xml配置详解
查看>>
工作笔记——使用Jest时遇到的一些问题
查看>>
jQuery 遍历--siblings() 方法、each() 方法
查看>>
window系统下调度数据库类型资源库中的kettle job
查看>>
10、小易记单词--2017网易春招
查看>>
monkey 命令详解
查看>>
Scrapy XPath语法
查看>>
《Entity Framework 6 Recipes》中文翻译系列 (8) -----第二章 实体数据建模基础之继承关系映射TPT...
查看>>
图像预处理
查看>>
16个Web开发的IDE
查看>>
Oracle KEEP的用法
查看>>
Java动态代理与Cglib库
查看>>
Hebbian学习规则 1神经元 简单实现
查看>>