15.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]。
对于用可变参数的函数, 编译器可能用不同的调用次序。例如, 如果可变参数的调用比固定参数的调用效率低。所以在调用可变参数的函数前, 它的原型说明必须在作用域内, 编译器由此知道要用不定长调用机制。在原型说明中用省略号“. . . ” 来表示可变参数。
参考资料: [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]。