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



当我在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

最新更新