実際、私は複数のファイルでコンパイルしていました。ファイルは次のとおりです。
ファイル 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
です。foo3()
しかし、次のように main.c を変更すると ( 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()
と の場合に、このエラーが以前に表示されなかったのはなぜですかfoo2()
。前もって感謝します。