制作小型c项目
外面的每个人 我编写了一个非常简单的c代码,如下所示:制作小型c项目,c,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.
#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;
}
#包括
int main()
{
INTA、b、s、m、d;
系统(“清除”);
INTA=20;
int b=40;
s=总和(a,b);
m=mul(a,b);
d=div(a,b);
printf(“\n给定编号的和=%d\n给定编号的乘积=%d\n给定编号的除法=%d”,s,m,d);
返回0;
}
文件名为exp.c
然后我编写以下代码:
#include<stdio.h>
int sum( int x ,int y)
{
int z;
z=x+y;
return z;
}
#包括
整数和(整数x,整数y)
{
intz;
z=x+y;
返回z;
}
我把它存为sum
然后我编写以下代码:
#include<stdio.h>
int mul( int z ,int u)
{
int v ;
v=z+u;
return v;
}
#包括
int mul(int z,int u)
{
INTV;
v=z+u;
返回v;
}
另存为mul.c
然后我编写以下代码
#include<stdio.h>
int div (int a, int b)
{
int f;
f=a/b;
return f;
}
#包括
内部分区(内部a、内部b)
{
int f;
f=a/b;
返回f;
}
另存为div.c
现在我的问题是,我想将所有文件作为单个项目使用。
我希望exp.c使用mul.c,div.c,sum.c中定义的函数
我想知道怎么做?
如何制作图书馆表格mul.c,div.c,sum.c?
如何将这些库与exp.c关联?
有人能给我解释一下制作这个项目的详细过程吗?
我正在使用ubuntu作为我的操作系统。请帮助我阅读
make
——这将回答您关于构建/编译等方面的问题
您应该有一个包含函数原型的
.h
文件。它不是严格需要的(因为你的函数返回int
),但你现在必须养成这个习惯,因为它以后不会很容易实现阅读make
——这将回答你关于构建/编译等的问题
您应该有一个包含函数原型的
.h
文件。它不是严格需要的(因为您的函数返回int
),但您现在必须养成这个习惯,因为它以后不会很容易实现。最简单的方法是不创建库,而是将它们全部编译成一个可执行文件:
$ gcc -o myprogram sum.c mul.c div.c
gcc exp.c sum.c div.c mul.c
这有一个缺点,就是您将一直重新编译所有代码,因此随着文件变大,代价(构建时间)会增加,因为即使只更改div.c(例如),也会迫使您重新编译sum.c和mul.c
下一步是分别编译它们,并保留对象文件。为此,我们可以使用如下生成文件:
myprogram: sum.o mul.o div.o
sum.o: sum.c
mul.o: mul.c
div.o: div.c
这将保留对象文件,当您键入make时,make工具将比较对象文件的时间戳和C文件的时间戳,并且只重新编译更改的时间戳。请注意,要使上述功能正常工作,每个冒号后面必须有一个物理选项卡。最简单的方法是不创建库,而是将它们一起编译成一个可执行文件:
$ gcc -o myprogram sum.c mul.c div.c
gcc exp.c sum.c div.c mul.c
这有一个缺点,就是您将一直重新编译所有代码,因此随着文件变大,代价(构建时间)会增加,因为即使只更改div.c(例如),也会迫使您重新编译sum.c和mul.c
下一步是分别编译它们,并保留对象文件。为此,我们可以使用如下生成文件:
myprogram: sum.o mul.o div.o
sum.o: sum.c
mul.o: mul.c
div.o: div.c
这将保留对象文件,当您键入make时,make工具将比较对象文件的时间戳和C文件的时间戳,并且只重新编译更改的时间戳。请注意,要使上述功能正常工作,每个冒号后面必须有一个物理选项卡。为此,您需要执行以下几个步骤:
intsum(intx,inty)来声明它们此文件中的代码>。更通用的方法(更清晰)是将文件中的所有函数(不是所有函数,而是将从其他文件访问的函数)写入头文件,然后包括头文件
gcc-cmul.c
等来完成。这将创建一个mul.o-a机器语言文件gcc-o outputname mul.o sum.o…
请注意,步骤2和步骤3也可以组合在一起,我只是想清楚地解释一下这些步骤。这通常是通过生成文件来实现的,以稍微加快速度。为此,您需要执行以下几个步骤:
intsum(intx,inty)来声明它们此文件中的代码>。更通用的方法(更清晰)是将文件中的所有函数(不是所有函数,而是将从其他文件访问的函数)写入头文件,然后包括头文件
gcc-cmul.c
等来完成。这将创建一个mul.o-a机器语言文件gcc-o outputname mul.o sum.o…
div.h
可能看起来像:
#ifndef DIV_H_
#define DIV_H_
int div(int a, int b);
#endif
然后,您将在使用相应函数的源文件中包含头文件
然后,要编译并链接:
gcc -o my_prog exp.c sum.c mul.c div.c
正如其他人所建议的那样,你让自己想好好读一读
gcc exp.c mylib.a
#ifndef MODULE_NAME
#define MODULE_NAME
void module_func();
#endif
#include "module.h"
void module_func(){
//implementation
}