Как вызвать функцию из внешнего.C файл в C?
Мои файлы
// main.c
#include "add.c"
int main(void) {
int result = add(5,6);
printf("%dn", result);
}
и
// add.c
int add(int a, int b) {
return a + b;
}
8 ответов
использовать #include "ClasseAusiliaria.c"
[не использовать угловые скобки ( )]
и Я предпочитаю сохранить файл с .h
расширение в том же каталоге / папке.
#include "ClasseAusiliaria.h"
изменить Main.c
вот так
#include <stdlib.h>
#include <stdio.h>
#include "ClasseAusiliaria.h"
int main(void)
{
int risultato;
risultato = addizione(5,6);
printf("%d\n",risultato);
}
создать ClasseAusiliaria.h
вот так
extern int addizione(int a, int b);
затем я скомпилировал и запустил ваш код, я получил вывод
11
вы должны объявить
int addizione(int a, int b);
(обратите внимание на точку с запятой)
в файле заголовка и включить файл в оба файла.
Включая его в Main.c сообщит компилятору, как следует вызывать функцию.
Включение во второй файл позволит вам проверить правильность объявления (компилятор будет жаловаться, если объявление и реализация не совпадают).
затем вы должны скомпилировать оба *.c файлы в один проект. Детали зависят от компилятора.
создать файл classAusiliaria.h
и там укажите свои сигнатуры метода.
теперь вместо включения .файл c включить это .H-файл.
вы можете включить .c файлами, никаких проблем с этим логически, но в соответствии со стандартом для скрытия реализации функции, но для предоставления двоичных файлов, заголовков и исходных файлов используются методы, где заголовки используются для определения сигнатур функции, где в качестве исходных файлов есть реализация. Когда вы продаете свой проект извне, вы просто отправляете заголовки и двоичные файлы(libs и DLL), чтобы скрыть основную логику реализации функции.
здесь проблема в том, что вы должны использовать "" вместо, поскольку вы включаете файл, который находится внутри того же каталога, в файл, где происходит включение. Это общее для обоих .с и. H-файлы
есть много больших вкладов здесь, но позвольте мне добавить мой не менее.
Первое, что я заметил, Вы не сделали никаких обещаний в главном файле, что вы собираетесь создать функцию, известную как add(). Это количество было сделано следующим образом в главном файле:
int add(int a, int b);
перед вашей основной функцией, таким образом, ваша основная функция распознает функцию add и попытается найти ее исполняемый код. Таким образом, по существу ваши файлы должны быть
Main.c
int add(int a, int b);
int main(void) {
int result = add(5,6);
printf("%d\n", result);
}
и // добавлять.c
int add(int a, int b) {
return a + b;
}
вы не включают c-файлы в других файлах. Вместо этого создайте файл заголовка, в котором объявлена функция, которую вы хотите вызвать. Вот так: файл ClasseAusiliaria.h:
int addizione(int a, int b); // this tells the compiler that there is a function defined and the linker will sort the right adress to call out.
в Главном.C файл затем можно включить вновь созданный файл заголовка:
#include <stdlib.h>
#include <stdio.h>
#include <ClasseAusiliaria.h>
int main(void)
{
int risultato;
risultato = addizione(5,6);
printf("%d\n",risultato);
}
write main.c like this -
caution : while linking both main.0 and ClasseAusiliaria.o should be
available to linker.
#include <stdlib.h>
#include <stdio.h>
extern int addizione(int a, int b)
int main(void)
{
int risultato;
risultato = addizione(5,6);
printf("%d\n",risultato);
}