📄 subject_58193.htm
字号:
<p>
序号:58193 发表者:山人 发表日期:2003-10-30 16:08:20
<br>主题:“...”是什么意思?
<br>内容:windows程序设计里的一个函数如下:<BR><BR>void EditPrintf (HWND hwndEdit, TCHAR * szFormat, ...)<BR> @@@@@@@<BR> <BR><BR><BR><BR><BR><BR>{<BR> TCHAR szBuffer [1024] ;<BR> va_list pArgList ;<BR><BR> va_start (pArgList, szFormat) ;<BR> wvsprintf (szBuffer, szFormat, pArgList) ;<BR> va_end (pArgList) ;<BR> SendMessage (hwndEdit, EM_SETSEL, (WPARAM) -1, (LPARAM) -1) ;<BR> SendMessage (hwndEdit, EM_REPLACESEL, FALSE, (LPARAM) szBuffer) ;<BR> SendMessage (hwndEdit, EM_SCROLLCARET, 0, 0) ;<BR><BR><BR>@@@@@@处的“...”是什么意思?<BR>}
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:Nightmare 回复日期:2003-10-30 16:13:23
<br>内容:有"很多"参数只能用 ...<BR><BR>如<BR><BR>int sprintf( char *buffer, const char *format [, argument] ... );<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:LuckGood 回复日期:2003-10-30 16:26:33
<br>内容:函数的参数个数不定时就用...来表示不定的参数。但是这类函数在出现...之前必需至少有一个参数。编译器必需已这个参数为基础导出可能的其他参数,就像上面的EditPrintf中的szFormat参数。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:山人 回复日期:2003-10-30 16:28:04
<br>内容:那在函数体中怎么使用那些未知的变量呢?<BR><BR><BR>比如HWND hwndEdit 可以是hwndEdit<BR><BR>在实际调用这个函数的时候 怎么引用变量? 谢了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:飞翔的瞳眸 回复日期:2003-10-30 16:40:03
<br>内容:在szFormat里有后面参数的信息,包括几个参数,参数的类型。<BR>如printf()一样的函数!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:iwill 回复日期:2003-10-30 16:40:09
<br>内容:msdn的例子 主要是三个函数 va_arg va_end va_start<BR>不过不到万不得已不推荐用不定参数 ,容易引起堆栈崩溃<BR><BR>/* VA.C: The program below illustrates passing a variable<BR> * number of arguments using the following macros:<BR> * va_start va_arg va_end<BR> * va_list va_dcl (UNIX only)<BR> */<BR><BR>#include <stdio.h><BR>#define ANSI /* Comment out for UNIX version */<BR>#ifdef ANSI /* ANSI compatible version */<BR>#include <stdarg.h><BR>int average( int first, ... );<BR>#else /* UNIX compatible version */<BR>#include <varargs.h><BR>int average( va_list );<BR>#endif<BR><BR>void main( void )<BR>{<BR> /* Call with 3 integers (-1 is used as terminator). */<BR> printf( "Average is: %d\n", average( 2, 3, 4, -1 ) );<BR><BR> /* Call with 4 integers. */<BR> printf( "Average is: %d\n", average( 5, 7, 9, 11, -1 ) );<BR><BR> /* Call with just -1 terminator. */<BR> printf( "Average is: %d\n", average( -1 ) );<BR>}<BR><BR>/* Returns the average of a variable list of integers. */<BR>#ifdef ANSI /* ANSI compatible version */<BR>int average( int first, ... )<BR>{<BR> int count = 0, sum = 0, i = first;<BR> va_list marker;<BR><BR> va_start( marker, first ); /* Initialize variable arguments. */<BR> while( i != -1 )<BR> {<BR> sum += i;<BR> count++;<BR> i = va_arg( marker, int);<BR> }<BR> va_end( marker ); /* Reset variable arguments. */<BR> return( sum ? (sum / count) : 0 );<BR>}<BR>#else /* UNIX compatible version must use old-style definition. */<BR>int average( va_alist )<BR>va_dcl<BR>{<BR> int i, count, sum;<BR> va_list marker;<BR><BR> va_start( marker ); /* Initialize variable arguments. */<BR> for( sum = count = 0; (i = va_arg( marker, int)) != -1; count++ )<BR> sum += i;<BR> va_end( marker ); /* Reset variable arguments. */<BR> return( sum ? (sum / count) : 0 );<BR>}<BR>#endif<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿志 回复日期:2004-01-18 02:47:35
<br>内容:查了msn,原来是宏啊,我原来想,类型到底是怎么管理的呢?怪不得,呵呵
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:山人 回复日期:2004-01-18 13:23:07
<br>内容:msn? <BR><BR><BR>我当时明白了 但现在都忘了是怎么回事了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -