stdio或stdlib中的system()?

时间:2012-01-31 15:47:07

标签: c stdio std

我将system("pause")stdio.h一起使用,它的运行没有错误。当我查看stdio函数时,system()位于stdlib中。它是如何工作的,这是代码?

#include <stdio.h>

int main() {
    printf("Hello World\n" );
    system("pause");
    return 0;
}

4 个答案:

答案 0 :(得分:11)

答案是它是一个隐含的声明。如果编译器没有看到函数的原型,则假定它被声明为:

int system();

如果您在编译器上调高警告级别,您可能会看到这会导致警告。隐式声明通常是不受欢迎的,但在这种情况下,这就是为什么它可以工作而不会导致任何错误。

答案 1 :(得分:0)

根据联机帮助页,它位于stdlib.h

答案 2 :(得分:0)

#include只带有函数声明(prototype),函数由库提供,包含在链接阶段。

即使你没有#include它,只要编译时编译器假定的定义与携带它的库中的定义匹配,就没有错误,它将起作用。

答案 3 :(得分:0)

从标准4.10.4.5系统函数在stdlib.h中:

     #include <stdlib.h>
     int system(const char *string);