新微赢技术网

标题: c++函数参数表的问题(新手) [打印本页]

作者: 击水之石    时间: 2009-11-3 01:16
标题: c++函数参数表的问题(新手)
void AddText(HWND hwnd, PCTSTR pszFormat, ...) {
va_list argList;
va_start(argList, pszFormat);
TCHAR sz[20 * 1024];
Edit_GetText(hwnd, sz, chDIMOF(sz));
_vstprintf(_tcschr(sz, 0), pszFormat, argList);
Edit_SetText(hwnd, sz);
va_end(argList);
}
这样定义的函数是怎么回事啊?这个函数就定义了一处,怎么有这么多种调用方式。

AddText(hwnd, TEXT(" Fixed"));

AddText(hwnd, TEXT("Filename: %s\r\n"), pe.szExeFile);

AddText(hwnd, TEXT(" PID=%08X, ParentPID=%08X, ")
TEXT("PriorityClass=%d, Threads=%d, Heaps=%d\r\n"),
pe.th32ProcessID, pe.th32ParentProcessID,
pe.pcPriClassBase, pe.cntThreads,
th.HowManyHeaps());
作者: Iしovのyou    时间: 2009-11-3 01:16
看了几遍鸟,新手啊!
还是看不懂!>_<
不知道程序什么意思啊?
作者: お妞妞☆    时间: 2009-11-3 01:16
understand variable legnth paramters first.

Her is a piece of code I wrote 10 years ago.


程序代码:

#include <iostream>
#include <cstdarg> // for va_list, va_start, va_end, va_arg
using namespace std;
bool debug = false;
void DebugOutput(const char* formartString, ...)
{
va_list ap;
if(debug)
{
va_start(ap, formartString);
vfprintf(stderr, formartString, ap);
va_end(ap);
}
}
void SquareInts(int counter, ...)
{
int temp;
va_list ap;
va_start(ap, counter);
for(int i=0; i<counter; ++i)
{
temp = va_arg(ap, int);
cout<<temp*temp<<" ";
}
va_end(ap);
cout<<endl;
}
int main()
{
debug = true;
DebugOutput("This is the debug output\n");
DebugOutput("int %d\n", 13);
DebugOutput("My name is %s and I am %d years old\n", "John Doe", 20);
DebugOutput("lots of integers here %d %d %d %d %d\n", 5, 7, 6, -3, 90);
cout<<"---------------------------------------------------------"<<endl;
SquareInts(3, 40, 23, -20);
return 0;
}
作者: 第三滴眼泪$    时间: 2009-11-3 01:16

感谢版主!




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2