Связать файл .c с файлом main.c

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

Заголовок main.c выглядит так...

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

мой код функции fun.c выглядит так...

#include <stdio.h>
#include <stdlib.h>
#include "main.c"

но по какой-то причине они не связаны друг с другом. Когда я компилирую и запускаю, я не получаю ошибку, он просто запускает main.c, как будто fun.c не существует, то есть игнорирует вызов функции fun.c и запускает программу, не выполняя то, что мне нужно для отображения .

Я написал код вместе в main.c, так что я знаю, что функция работает. У меня просто возникли небольшие проблемы с разделением его на два отдельных файла .c и их связыванием.

спасибо за любую помощь

// редактировать и обновлять

компиляция с помощью gcc -m32 -O1 *.c два файла в каталоге: fun.c и main.c

По сути, мы отправляем функцию, которая должна работать с предоставленным main.c, но мы не можем вслух изменять main.c, поэтому я не уверен, как добавить ее в свою функцию, чтобы они обе компилировались/связывались вместе


person Yawn    schedule 17.11.2014    source источник
comment
Вы (обычно) не включаете файлы .c в другие файлы .c. Также, пожалуйста, опубликуйте свой makefile или аргументы командной строки компилятора/компоновщика на свой вопрос.   -  person Dai    schedule 17.11.2014
comment
Попробуйте gcc -Wall -m32 -O1 main.c fun.c -o exename, где exename — это то, что вы выбрали для вызова исполняемого файла.   -  person user3386109    schedule 17.11.2014
comment
О, и, как упомянул Дай, удалите #include "main.c" из fun.c   -  person user3386109    schedule 17.11.2014
comment
Когда я компилирую и запускаю, я не получаю ошибки, он просто запускает main.c, как будто fun.c не существует. Если программа работает, то ошибки компоновки нет. Символы (глобальные функции и переменные) в файле func.c, на которые ссылается ваша программа, успешно преобразуются в адреса памяти, а это означает, что они действительно являются частью исполняемого образа.   -  person barak manos    schedule 17.11.2014
comment
Как выглядит вызов функции в main.c, который вызывает function в fun.c? Мы можем догадываться всю ночь, но если вы не опубликуете свой код, мы никуда не денемся, кроме как в область предположений.   -  person David C. Rankin    schedule 17.11.2014
comment
добавьте файл fun.h и включите его в файл main.c. В файле fun.h укажите прототип функции, объявленной в файле fun.c.   -  person Sarwan    schedule 17.11.2014


Ответы (1)


Пожалуйста, используйте другие имена для ваших внешних файлов в будущем, main.c неудобен. Правильный способ сделать это: создать заголовочный файл для вашего аутсорсинга main.c. Он должен называться main.h. Там вы, например, объявите свои функции: addNumbers(int a, int b); Затем вы открываете файл main.c внешнего источника и там вы #include "main.h". >. Затем откройте файл fun.c и #include "main.h". После того, как все сделано правильно, скомпилируйте основной файл: gcc -c -o fun.o fun.c » Затем ваш внешний файл: gcc -c -o main.o main.c » Теперь свяжите два файла вместе: gcc -o name main.o fun.o После этого вы сможете выполнить свою программу.

person Valinho    schedule 17.11.2014