|
|
|
|
| 函数errexit(const char *format, ...)参数部分 “..." 该如何理解 |
 函数errexit(const char *format, ...)参数部分 “..." 该如何理解 - xeon123 [ 2006-02-22 10:38 | 865 byte(s)]
 Re: 函数errexit(const char *format, ...)参数部分 “..." 该如何理解 - mq110 [ 2006-02-23 09:05 | 181 byte(s)]
 Re: 函数errexit(const char *format, ...)参数部分 “..." 该如何理解 - Atu [ 2006-02-22 11:03 | 252 byte(s)]
 Re: 函数errexit(const char *format, ...)参数部分 “..." 该 - xeon123 [ 2006-02-22 11:08 | 97 byte(s)]
 Re: 函数errexit(const char *format, ...)参数部分 “..." 该 - ddd [ 2006-02-22 22:22 | 58 byte(s)]
 Re: 函数errexit(const char *format, ...)参数部分 “..." 该 - Atu [ 2006-02-22 11:58 | 32 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
在看E.Comer的TCP/IP第三卷中P58,P60看到以下形式的函数,对作为参数部分的 “..." 很不理解
请问这种形式函数的用法是怎样的?谢谢!
int errexit(const char *format, ...);
/* errexit.c - errexit */
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
/*------------------------------------------------------------------------
* errexit - print an error message and exit
*------------------------------------------------------------------------
*/
int
errexit(const char *format, ...)
{
va_list args;
va_start(args, format);
vfprintf(stderr, format, args);
va_end(args);
exit(1);
}
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
... = 任意类型和数量的参数
函数内部,根据前面固定参数,这里就是format,去解析后面的参数
并假定调用这已经按照固定参数部分的要求提供了正确的其他参数
C里面的printf,scanf 系列函数,都是用了这个技术
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
...还有一个功用. 除了可变长以外的.
ioctl函数的第3个参数是... 目的是避免函数参数的类型检查.
ioctl函数的第3个参数根据驱动程序设计的不同 会有多种类型的参数.
|
|
|
[Original]
[Print]
[Top]
|
|
|