制作小型C项目

时间:2011-04-26 12:32:47

标签: c

每个人都在那里 我写了一个非常简单的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 个答案:

答案 0 :(得分:1)

最简单的方法是不创建库,只需将它们一起编译成一个可执行文件:

$ 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。

答案 1 :(得分:1)

您需要为此执行以下几个步骤:

  1. 声明主文件中的函数编译主文件(exp.c)时,编译器会输出错误,因为他不知道函数sum,mul等是什么类型的。 是。所以你必须在这个文件中通过int sum( int x ,int y);声明它们。更通用的方法(更清楚)是将文件中的所有函数(不是全部,但将从其他文件访问的函数)写入头文件,然后包含头文件。

    < / LI>
  2. 编译每个文件您需要编译每个文件。这可以通过一个简单的gcc -c mul.c等来完成。这将创建一个mul.o - 一个机器语言文件。

  3. 链接他们编译完每个文件后,您需要将它们放在一个可执行文件中。这是通过gcc -o outputname mul.o sum.o ...

  4. 完成的

    请注意,步骤2和3也可以合并,我只想清楚地解释这些步骤。这通常通过Makefile来完成,以加快速度。

答案 2 :(得分:1)

首先,您需要在相应的头文件中声明您的每个函数(您不 使用头文件,但这是最常见的方式这样做)。例如,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 ,因为它有助于在项目变得更复杂时简化构建过程。

答案 3 :(得分:0)

阅读make - 这将回答有关构建/编译/ etc

的问题

您应该有一个.h文件,其中包含您的函数原型。它不是严格需要的(因为你的函数返回int)但是你现在必须养成这个习惯,因为以后不会很容易

答案 4 :(得分:0)

您需要在使用它们的文件中声明这些函数。执行此操作的常用方法是将声明放在头文件中,假设为funcs.h:

#ifndef FUNCS_H
#define FUNCS_H

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

#endif

现在#include包含在你的主源文件中。然后构建可执行文件:

 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

答案 5 :(得分:0)

组织代码的一个好习惯是将所有函数原型放在.h文件中,并将实现放入相关的.c文件中,使用包含保护来避免多次包含。

示例module.h文件:

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

示例module.c:

#include "module.h"
void module_func(){
  //implementation
}