为什么要包含stdlib.h?

sch*_*ger 4 c

C函数malloc()是在stdlib.h下定义的.如果我们不包含这个文件应该给出错误,但是这个代码可以正常工作并带一点警告.我的问题是如果malloc()在没有这个头文件的情况下工作,那么为什么要包含它呢?请清楚我的概念.

# include <stdio.h>

int main()  
{
    int a, b, *p;
    p = (int*)malloc(sizeof(int)*5);
    for(a=0;a<5;a++)p[a]=a*9;
    for(b=0;b<5;b++)printf("%d ",p[b]); 
}
Run Code Online (Sandbox Code Playgroud)

Kar*_*ath 11

在C中,遗憾的是,您不需要预先声明函数.如果编译器遇到一个新函数,它将为它创建一个隐式声明("mmm`kay,这是如何使用它所以我将假设参数的类型是..").

不要依赖这个"功能",一般不要编写编译警告的代码.

  • C99不允许隐式函数声明 (4认同)

小智 5

阅读警告。它说它无效。编译器对你太客气了。在 Clang 中这有效,但在其他编译器中可能无效。

至少包括它以抑制警告。不必要的警告很烦人。任何程序都应该编译时将警告视为错误(我总是启用它)。