C言語における可変パラメータの実現
2429 ワード
以前は可変パラメータをあまり使っていなかったのですが、最近は便利さをもたらしていることに気づきました....以下はC言語のサンプルコードです.
なお、可変パラメータ関数はC言語のものですので、C++で使用する場合は、次のように定義します.
これはWindowsのプログラミングでも役に立ちます.例えば、エラーを表示したとき:私の従来のやり方は:
今、変数も定義しなくてもいいです.直接一言でできます.MsgBox(NULL、NULL、MB_OK|MB_ICONEXCLAMATION、「%s%d%c」、「女の子は泣かない」、100、'A');女の子は泣かない(QQ:19103566)@2012-05-1022:41:13@http://www.cnblogs.com/nbsofer
#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