⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_58193.htm

📁 vc
💻 HTM
字号:
<p>
序号:58193 发表者:山人 发表日期:2003-10-30 16:08:20
<br>主题:“...”是什么意思?
<br>内容:windows程序设计里的一个函数如下:<BR><BR>void EditPrintf (HWND hwndEdit, TCHAR * szFormat, ...)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@@@@@@@<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR><BR><BR><BR><BR><BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; szBuffer [1024] ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; va_list&nbsp;&nbsp;&nbsp;&nbsp;pArgList ;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; va_start (pArgList, szFormat) ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wvsprintf (szBuffer, szFormat, pArgList) ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; va_end (pArgList) ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SendMessage (hwndEdit, EM_SETSEL, (WPARAM) -1, (LPARAM) -1) ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SendMessage (hwndEdit, EM_REPLACESEL, FALSE, (LPARAM) szBuffer) ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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>内容:有&#34;很多&#34;参数只能用 ...<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&nbsp;&nbsp; 可以是hwndEdit<BR><BR>在实际调用这个函数的时候&nbsp;&nbsp;怎么引用变量?&nbsp;&nbsp;谢了
<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&nbsp;&nbsp;va_start<BR>不过不到万不得已不推荐用不定参数 ,容易引起堆栈崩溃<BR><BR>/* VA.C: The program below illustrates passing a variable<BR> * number of arguments using the following macros:<BR> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;va_start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;va_arg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;va_end<BR> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;va_list&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; va_dcl (UNIX only)<BR> */<BR><BR>#include &lt;stdio.h&gt;<BR>#define ANSI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Comment out for UNIX version&nbsp;&nbsp;&nbsp;&nbsp; */<BR>#ifdef ANSI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* ANSI compatible version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<BR>#include &lt;stdarg.h&gt;<BR>int average( int first, ... );<BR>#else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* UNIX compatible version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<BR>#include &lt;varargs.h&gt;<BR>int average( va_list );<BR>#endif<BR><BR>void main( void )<BR>{<BR>&nbsp;&nbsp; /* Call with 3 integers (-1 is used as terminator). */<BR>&nbsp;&nbsp; printf( &#34;Average is: %d\n&#34;, average( 2, 3, 4, -1 ) );<BR><BR>&nbsp;&nbsp; /* Call with 4 integers. */<BR>&nbsp;&nbsp; printf( &#34;Average is: %d\n&#34;, average( 5, 7, 9, 11, -1 ) );<BR><BR>&nbsp;&nbsp; /* Call with just -1 terminator. */<BR>&nbsp;&nbsp; printf( &#34;Average is: %d\n&#34;, average( -1 ) );<BR>}<BR><BR>/* Returns the average of a variable list of integers. */<BR>#ifdef ANSI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* ANSI compatible version&nbsp;&nbsp;&nbsp;&nbsp;*/<BR>int average( int first, ... )<BR>{<BR>&nbsp;&nbsp; int count = 0, sum = 0, i = first;<BR>&nbsp;&nbsp; va_list marker;<BR><BR>&nbsp;&nbsp; va_start( marker, first );&nbsp;&nbsp;&nbsp;&nbsp; /* Initialize variable arguments. */<BR>&nbsp;&nbsp; while( i != -1 )<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum += i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i = va_arg( marker, int);<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; va_end( marker );&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Reset variable arguments.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<BR>&nbsp;&nbsp; return( sum ? (sum / count) : 0 );<BR>}<BR>#else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* UNIX compatible version must use old-style definition.&nbsp;&nbsp;*/<BR>int average( va_alist )<BR>va_dcl<BR>{<BR>&nbsp;&nbsp; int i, count, sum;<BR>&nbsp;&nbsp; va_list marker;<BR><BR>&nbsp;&nbsp; va_start( marker );&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Initialize variable arguments. */<BR>&nbsp;&nbsp; for( sum = count = 0; (i = va_arg( marker, int)) != -1; count++ )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum += i;<BR>&nbsp;&nbsp; va_end( marker );&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Reset variable arguments.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<BR>&nbsp;&nbsp; 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?&nbsp;&nbsp;<BR><BR><BR>我当时明白了&nbsp;&nbsp;&nbsp;&nbsp;但现在都忘了是怎么回事了
<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 + -