C/C++中用va_start/va_arg/va_end实现可变参数函数的简单例子
例子很简单
(1)控制台工程
#include <stdarg.h> #include <stdio.h> 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", ""); }
参考:http://www.yiibai.com/c_standard_library/c_macro_va_arg.html
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步