15-无参数和未指定参数
9.2.3 无参数和未指定参数
假设有下面的函数原型:
void print_name();
一个不支持ANSI C的编译器会假定用户没有用函数原型来声明函数,它将不会检查参数。为了表明函数确实没有参数,应该在圆括号中使用 void 关键字:
void print_name(void);
支持ANSI C的编译器解释为 print_name() 不接受任何参数。然后在调用该函数时,编译器会检查以确保没有使用参数。
一些函数接受(如, printf() 和 scanf() )许多参数。例如对于 printf() ,第1个参数是字符串,但是其余参数的类型和数量都不固定。对于这种情况,ANSI C允许使用部分原型。例如,对于 printf() 可以使用下面的原型:
int printf(const char *, ...);
这种原型表明,第1个参数是一个字符串(第11章中将详细介绍),可能还有其他未指定的参数。
C库通过 stdarg.h 头文件提供了一个定义这类(形参数量不固定的)函数的标准方法。第16章中详细介绍相关内容。