#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作为我的操作系统。请帮帮我
答案 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)
您需要为此执行以下几个步骤:
声明主文件中的函数编译主文件(exp.c)时,编译器会输出错误,因为他不知道函数sum,mul等是什么类型的。 是。所以你必须在这个文件中通过int sum( int x ,int y);
声明它们。更通用的方法(更清楚)是将文件中的所有函数(不是全部,但将从其他文件访问的函数)写入头文件,然后包含头文件。
编译每个文件您需要编译每个文件。这可以通过一个简单的gcc -c mul.c
等来完成。这将创建一个mul.o - 一个机器语言文件。
链接他们编译完每个文件后,您需要将它们放在一个可执行文件中。这是通过gcc -o outputname mul.o sum.o ...
请注意,步骤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
}