当我在Visual Studio 2010中创建一个简单的C程序时,http://debugmode.net/2012/02/06/how-to-write-and-run-a-c-program-in-visual-studio-2010/
我删除了"#include
我的程序仍然成功运行,我不明白怎么可能?
任何帮助,不胜感激。问候
stdio.h 标头不是严格必需的,除非您使用其中声明的函数,例如:
http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.12.html
进一步查看代码,我相信当您没有原型时的默认行为是假设一个 int 返回类型,并从在这种特定情况下有效的参数类型中派生参数类型。但这通常是一种不好的做法,应该避免。
如果它通过编译器/链接器而没有任何警告,您可能需要检查您的环境设置。很容易忘记包含标题,如果您没有注意到它,它可能会导致许多意想不到且难以追踪的副作用。
包含标准头文件的主要目的是将标准函数的声明包含在源文件中。
然而,最初的标准C语言(C89/90)并不要求在调用函数之前声明函数(除了可变参数函数,它们必须用原型预先声明以避免未定义的行为)。出于这个原因,只要我们谈论的是非可变参数函数调用,就完全可以编写正确的程序而无需预先声明标准函数,即不包含标准头文件。
例如,在 C89/90 中,使用两个char *
参数调用strcmp
函数是完全合法的,而无需预先声明strcmp
。同时,如果您希望程序保持具有定义行为的有效 C 程序,则必须使用 prototype 预先声明printf
。
此头文件提供了许多常见函数和宏的原型。
如果不调用任何这些函数或宏,则不需要它。如果您确实调用了它们,只要您链接到正确的库,它仍然可以工作。但是,如果编译器没有这些定义,则可能会收到一些编译器错误或警告。
#include < stdio.h >
它是一个称为标准输入输出文件的头文件。输入,输出功能写入此文件。功能,如printf,scanf
等。 参考此 http://computer.howstuffworks.com/c2.htm