在Visual Studio </stdio.h>中没有#include <stdio.h>的C程序

时间:2012-12-12 04:59:49

标签: c visual-studio-2010

当我在Visual Studio 2010中创建一个简单的C程序时, http://debugmode.net/2012/02/06/how-to-write-and-run-a-c-program-in-visual-studio-2010/

我删除了“#include&lt; stdio.h&gt;”,

我的程序仍然运行成功,我无法理解它是怎么可能的?

感谢任何帮助。 的问候,

4 个答案:

答案 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