Почему g cc не распознает мой файл. c, даже если я предоставляю его в качестве аргумента? - PullRequest
0 голосов
/ 15 марта 2020

У меня file1.c:

#include <stdio.h>

int main() {

    file2();

}

и file2.c:

#include <stdio.h>

int file2() {
}

Я пытаюсь скомпилировать file1 с gcc -o file1 file1.c file2.c, но я получаю ошибку implicit declaration of function 'file2' is invalid.

Кто-нибудь знает, что мне здесь не хватает? file1.c и file2.c находятся в одной папке.

Ответы [ 3 ]

2 голосов
/ 15 марта 2020

Кто-нибудь знает, чего мне здесь не хватает?

Каждый исходный файл обрабатывается отдельно при компиляции. Таким образом, компилятор, заботясь о file.1.c, не знает, что может быть file2(), и жалуется.

1 голос
/ 15 марта 2020

Вам понадобится прототип функции int file2(void); в вашем file1.c или любых включенных файлах, потому что каждый файл компилируется отдельно, и вам нужно найти компилятор, где он сможет найти функцию, прежде чем вы ее вызовете.

0 голосов
/ 15 марта 2020

Вам также необходимо иметь объявление функции в файле file1.c. Вот так

#include <stdio.h>

int file2();

int main() {
    file2();
}
...