Подтвердить что ты не робот

Как вызвать функцию из внешнего .c файла в C?

Мои файлы

// main.c  

#include "add.c"

int main(void) {
    int result = add(5,6);
    printf("%d\n", result);
}  

и

// add.c  

int add(int a, int b) {
    return a + b;
}
4b9b3361

Ответ 2

Измените 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

Ответ 3

Вы должны объявить int add(int a, int b); (обратите внимание на точку с запятой) в заголовочном файле и включите файл в оба файла. Включение его в Main.c сообщит компилятору, как должна вызываться функция. Включение во второй файл позволит вам проверить правильность декларации (компилятор будет жаловаться, если декларация и реализация не совпадают).

Затем вы должны скомпилировать оба *.c файла в один проект. Детали зависят от компилятора.

Ответ 4

создайте файл classAusiliaria.h и в нем укажите свои сигнатуры методов.

Теперь вместо включения файла .c этот файл .h.

Ответ 5

Вы можете включить файлы .c, без проблем с ним логически, но в соответствии со стандартом, чтобы скрыть реализацию функции, но чтобы обеспечить использование двоичных файлов, методов заголовков и исходных файлов, где заголовки используются для определения функции-сигнатуры, где в качестве исходных файлов реализована реализация. Когда вы продаете свой проект за пределами, вы просто отправляете заголовки и двоичные файлы (libs и dll), чтобы скрыть основную логику реализации вашей функции.

Здесь проблема заключается в том, что вы должны использовать "" вместо < > , поскольку вы включаете файл, который находится внутри того же каталога, в файл, в котором происходит включение. Он является общим для файлов .c и .h

Ответ 6

Здесь много больших вкладов, но позвольте мне добавить мои, не тем меньше.

Прежде всего я заметил, что вы не сделали никаких promises в главном файле, что вы собираетесь создать функцию, известную как add(). Этот счет был выполнен в основном файле:

    int add(int a, int b); 

перед вашей основной функцией, таким образом ваша основная функция распознает функцию добавления и попытается найти исполняемый код.  Значит, ваши файлы должны быть

main.c

    int add(int a, int b);

    int main(void) {
        int result = add(5,6);
        printf("%d\n", result);
    }  

и //add.c

    int add(int a, int b) {
        return a + b;
    }

Ответ 7

вы не должны включать c файлы в другие 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.

В файле Main.c вы можете включить вновь созданный файл заголовка:

#include <stdlib.h>
#include <stdio.h>
#include <ClasseAusiliaria.h>

int main(void)
{
    int risultato;
    risultato = addizione(5,6);
    printf("%d\n",risultato);
}

Ответ 8

 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);
 }