Как вызвать функцию из внешнего.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);
 }