注册 登录
编程论坛 C++教室

c++函数参数表的问题(新手)

jbwang 发布于 2007-09-19 23:06, 658 次点击

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());

3 回复
#2
weany2007-09-19 23:47
看了几遍鸟,新手啊!
还是看不懂!>_<
不知道程序什么意思啊?
#3
HJin2007-09-19 23:53
回复:(weany)看了几遍鸟,新手啊! 还是看不懂!&...

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;
}


#4
weany2007-09-20 08:11

感谢版主!
1