16.1 为什么调用 printf() 前, 必须要用 #include <stdio.h>?

为了把 printf() 的正确原型说明引入作用域。

对于用可变参数的函数, 编译器可能用不同的调用次序。例如, 如果可变参数的调用 比固定参数的调用效率低。所以在调用可变参数的函数前, 它的原型说明必须在 作用域内, 编译器由此知道要用不定长调用机制。在原型说明中用省略号  ``..." 来表示可变参数。

参考资料: [ISO, Sec. 6.3.2.2, Sec. 7.1.7]; [Rationale, Sec. 3.3.2.2, Sec. 4.1.6]; [H&S, Sec. 9.2.4 pp. 268-9, Sec. 9.6 pp. 275-6]。

翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)