当我在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>”,
我的程序仍然运行成功,我无法理解它是怎么可能的?
感谢任何帮助。 的问候,
答案 0 :(得分:2)
除非您使用在其中声明的函数,否则不严格要求stdio.h标头,例如:
http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.12.html
进一步查看代码我相信当你没有原型时的默认行为是假设一个int返回类型,并从在这种特殊情况下工作的参数类型派生参数类型。但这通常是一种不好的做法,应该避免。
如果在没有任何警告的情况下通过编译器/链接器,您可能需要检查环境设置。很容易忘记包含一个标题,如果你没有注意到它会引起很多意外和难以追踪的副作用。
答案 1 :(得分:1)
包含标准头文件的主要目的是在源文件中包含标准函数的声明。
但是,原始标准C语言(C89 / 90)不需要在调用函数之前声明函数(除了可变参数函数,它们必须预先声明原型以避免未定义的行为)。因此,只要我们讨论非可变函数调用,就可以在不预先声明标准函数的情况下编写正确的程序,即不包括标准头文件。
例如,在没有预先声明strcmp
的情况下,使用两个char *
参数调用strcmp
函数在C89 / 90中是完全合法的。同时,如果您希望程序保持具有已定义行为的有效C程序,则必须使用原型预先声明printf
。
答案 2 :(得分:0)
此头文件提供了许多常用函数和宏的原型。
如果您不调用任何这些函数或宏,则不需要它。如果您确实调用它们,只要您链接到正确的库,它仍然可以工作。但是如果编译器没有这些定义,你可能会遇到一些编译器错误或警告。
答案 3 :(得分:0)
#include < stdio.h >
这是一个称为标准输入输出文件的头文件。输入,输出功能写在此文件中。像printf,scanf
等功能。
参考此http://computer.howstuffworks.com/c2.htm