Свържете .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
О, и както Dai спомена, премахнете #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 име main.o fun.o След това можете да изпълните вашата програма.

person Valinho    schedule 17.11.2014