用gcc编译系统()

时间:2015-04-07 22:07:45

标签: c gcc compiler-errors

使用时,我的代码无法正确编译:

system("gcc -o filename temp.c");

我得到了:

implicit declaration of function system

我不确定缺少什么,因为它只会在gcc调用中抛出系统错误。

这是我的代码:

#include <stdio.h>

int main() {
        ...
        system("gcc -o filename temp.c");
        return 0;
}

3 个答案:

答案 0 :(得分:9)

#include <stdlib.h>的顶部添加main()

提示:当您看到内置函数的隐式声明时,您必须搜索该函数(使用google,例如现在您应该搜索&#34; system() C&#34;),以便找到相应的标题,即声明函数的位置。然后其中一个结果应该是函数的引用。

在我们的案例this链接中。在那里你可以看到:

  

概要

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

告诉您必须包含stdlib标头才能使用system()

正如布莱特先生所注意到的那样,如果您使用的是类似inux的操作系统,man 3 system也可以做到这一点。

示例:

samaras@samaras-A15:~$ man 3 system
SYSTEM(3)                  Linux Programmer's Manual                 SYSTEM(3)

NAME
       system - execute a shell command

SYNOPSIS
       #include <stdlib.h>  <-- this is what we are looking for!

       int system(const char *command);
...

答案 1 :(得分:1)

由于看起来您正在使用Posix系统,因此您应该了解man命令,该命令显示了大多数库调用的文档。在我的系统上,当我输入:

$ man system

我明白了:

SYSTEM(3)                  Linux Programmer's Manual                 

NAME
       system - execute a shell command

SYNOPSIS
       #include <stdlib.h>

       int system(const char *command);

请注意,在概要中,它会告诉您需要使用的包含文件。手册页还包含许多其他文档,例如返回值。

答案 2 :(得分:-2)

您没有收到错误,也没有阻止编译代码,只是警告您没有添加库系统功能,但gcc会自动添加。