实际上我正在编译多个文件。以下是文件:
文件 main.c -->
#include <stdio.h>
void foo3(void)
{
printf("INSIDE foo3 function\n");
}
int main()
{
foo1();
foo2();
foo3();
}
文件 1.c -->
#include <stdio.h>
void foo1(void)
{
printf("INSIDE foo1 function\n");
}
文件 2.c-->
#include <stdio.h>
void foo2(void)
{
printf("INSIDE foo2 function\n");
}
现在我使用 gcc 编译如下-->
gcc 1.c 2.c main.c -o main
以下是输出->
INSIDE foo1 function
INSIDE foo2 function
INSIDE foo3 function
我的疑问是 () 如何main
调用foo1()
以及foo2()
何时未在main.c
. 但是现在,如果我将 main.c 更改如下(编写foo3()
after的定义main()
),如下所示:
编辑 main.c -->
#include <stdio.h>
int main()
{
foo1();
foo2();
foo3();
}
void foo3(void)
{
printf("INSIDE foo3 function\n");
}
然后如果我编译我得到这个错误:
main.c:9:6: warning: conflicting types for ‘foo3’ [enabled by default]
void foo3(void)
^
main.c:6:2: note: previous implicit declaration of ‘foo3’ was here
foo3();
^
foo1()
为什么在and的情况下之前没有显示此错误foo2()
。先感谢您。