C言語における可変パラメータの実現


以前は可変パラメータをあまり使っていなかったのですが、最近は便利さをもたらしていることに気づきました....以下はC言語のサンプルコードです.
#include <stdio.h>
#include <stdarg.h>

int print(char* fmt, ...)
{
    char buffer[1024] = {0};
    va_list va;
    va_start(va, fmt);
    vsnprintf(buffer, sizeof(buffer), fmt, va);
    va_end(va);
    return printf(buffer);
}

int main(int argc, char** argv)
{
    print("%s %d %c
", " ", 100, 65); return 0; }

なお、可変パラメータ関数はC言語のものですので、C++で使用する場合は、次のように定義します.
int __cdecl print(char* fmt, ...)

これはWindowsのプログラミングでも役に立ちます.例えば、エラーを表示したとき:私の従来のやり方は:
char buf[128] = {0};
wsprintf(buf, "error:%08x", GetLastError());
MessageBox(NULL, buf, NULL, MB_OK | MB_ICONEXCLAMATION);

 
今、変数も定義しなくてもいいです.直接一言でできます.MsgBox(NULL、NULL、MB_OK|MB_ICONEXCLAMATION、「%s%d%c」、「女の子は泣かない」、100、'A');女の子は泣かない(QQ:19103566)@2012-05-1022:41:13@http://www.cnblogs.com/nbsofer