从minix内核源码中的scanf函数入手,学习C语言经典可变参数函数的实现过程 在scanf.c文件中,可以看到scanf函数,代码如下: - #include <stdio.h>
- #include <stdarg.h>
- #include "loc_incl.h"
- int scanf(const char *format, ...)
- {
- va_list ap;
- int retval;
- va_start(ap, format);
- retval = _doscan(stdin, format, ap);
- va_end(ap);
- return retval;
- }
复制代码
对于va_list、va_start、va_end等在stdarg.h头文件中定义的宏,都已经在(stdarg.h头文件源代码分析)一文中介绍过。在上述代码中我们可以看到有一个_doscan函数,而这一函数在头文件loc_incl.h中定义,函数声明如下:- int _doscan(FILE * stream, const char *format, va_list ap);
复制代码
|