делает маленький проект c - PullRequest
0 голосов
/ 26 апреля 2011

все там я пишу очень простой код C, который выглядит следующим образом:

#include<stdio.h>
int main()
{
    int a,b,s,m,d;
    system("clear");
    int a =20;
    int b =40;
    s=sum(a,b);
    m=mul(a,b);
    d=div(a,b);
    printf("\n the sum of given no. = %d\nThe product of given no. = %d\nThe division of given no = %d",s,m,d);
    return 0;
}

имя файла exp.c чем я пишу следующий код:

#include<stdio.h>
int sum( int x ,int y)
{
   int z;
   z=x+y;
   return z;
}

я сохранил его как sum.c чем я пишу следующий код:

#include<stdio.h>
int mul( int z ,int u)
{
   int v ;
   v=z+u;
   return v;
}

сохранить как mul.c чем я пишу следующий код

#include<stdio.h>
int div (int a, int b)
{ 
   int f;
   f=a/b;
   return f;
}

сохранить как div .c

Теперь моя проблема в том, что я хочу использовать все файлы как один проект. я хочу exp.c использовать функцию, определенную в mul.c, div.c, sum.c я хочу знать, как это сделать? как сделать библиотеку формы mul.c, div.c, sum.c? как связать эти библиотеки с exp.c? Может ли какой-либо орган объяснить мне детали процесса создания проекта? Я использую Ubuntu в качестве моей операционной системы. пожалуйста, помогите мне

Ответы [ 6 ]

1 голос
/ 26 апреля 2011

Во-первых, вам нужно объявить каждую из ваших функций в соответствующем заголовочном файле (у вас нет для использования заголовочных файлов, но это самый распространенный способ сделатьэтот).Например, div.h может выглядеть следующим образом:

#ifndef DIV_H_
#define DIV_H_

int div(int a, int b);

#endif

Затем вы будете #include заголовочные файлы в исходных файлах, где используются соответствующие функции.

Затем для компиляции иссылка:

gcc -o my_prog exp.c sum.c mul.c div.c

Как уже предлагали другие, вы хотите прочитать о Make , поскольку это помогает упростить процесс сборки, когда ваш проект станет более сложным.

1 голос
/ 26 апреля 2011

Для этого необходимо выполнить несколько шагов:

  1. Объявить функции в главном файле При компиляции основного файла (exp.c) компилятор выдаст ошибку, потому что он не знает, что это за функции sum, mul и т. д.Таким образом, вы должны объявить их через int sum( int x ,int y); в этом файле.Более общий подход (который более понятен) состоит в том, чтобы записать все функции, имеющиеся в файле (не все, но те, которые будут доступны из других файлов), в файл заголовка и затем включить файл заголовка.

  2. Компиляция каждого файла Вам необходимо скомпилировать каждый файл.Это можно сделать с помощью простого gcc -c mul.c и т. Д. Это создаст mul.o - файл машинного языка.

  3. Связать их После компиляции каждого файлавам нужно собрать их в один исполняемый файл.Это делается с помощью gcc -o outputname mul.o sum.o ...

Обратите внимание, что шаги 2 и 3 также можно комбинировать, я просто хотел четко объяснить шаги.Обычно это делается через Makefile, чтобы немного ускорить процесс

1 голос
/ 26 апреля 2011

Самый простой способ - не создавать библиотеку, а просто скомпилировать их все в один исполняемый файл:

$ gcc -o myprogram sum.c mul.c div.c

Это имеет тот недостаток, что вы будете все время перекомпилировать весь код,так как файлы становятся большими, штраф (время сборки) увеличивается, так как даже изменение только div.c (например) заставит вас пересобрать sum.c и mul.c тоже.

СледующийШаг состоит в том, чтобы скомпилировать их отдельно и оставить объектные файлы рядом.Для этого мы можем использовать Makefile следующим образом:

myprogram: sum.o mul.o div.o

sum.o:     sum.c

mul.o:     mul.c

div.o:     div.c

Это оставит объектные файлы рядом, а когда вы наберете make , инструмент make будет сравнивать временные метки объектных файлов.к файлам C, и перекомпилируйте только то, что изменилось.Обратите внимание, что для того, чтобы вышеперечисленное работало, должен быть физический TAB после каждого двоеточия.

0 голосов
/ 26 апреля 2011

Хорошей практикой для организации кода может быть помещение всех прототипов функций в файл .h, а реализаций в связанный файл .c с использованием защитных элементов include, чтобы избежать многократного включения.

Пример файла module.h:

#ifndef MODULE_NAME
#define MODULE_NAME
void module_func();
#endif

Пример module.c:

#include "module.h"
void module_func(){
  //implementation
}
0 голосов
/ 26 апреля 2011

Вам необходимо объявить функции в файле, который они используют.Обычный способ сделать это - поместить объявления в заголовочный файл, скажем, funcs.h:

#ifndef FUNCS_H
#define FUNCS_H

int sum( int, int );
int mul( int, int );
int div( int, int );

#endif

Теперь # включите это в ваш основной исходный файл.Затем для создания исполняемого файла:

 gcc exp.c sum.c div.c mul.c

Чтобы создать библиотеку, вам необходимо скомпилировать файлы отдельно:

gcc -c sum.c div.c mul.c

и затем запустить ar для сборки библиотеки:

ar rvs sum.o div.o mul.o mylib.a

А затем используйте его из gcc:

gcc exp.c mylib.a
0 голосов
/ 26 апреля 2011

read on make - это ответит на ваши вопросы о сборке / компиляции / etc

У вас должен быть файл .h, который будет содержать ваши прототипы функций.Это не является строго необходимым (поскольку ваши функции возвращают int), но вы должны привыкнуть к нему сейчас, потому что позже это не будет легко

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...