分文件编程
分模块编程的思想
优点:
功能划分明确
便于调试
主函数整洁明了
Linux分库调用示例
原函数代码 caculment.c
#include <stdio.h>
int add(int data1,int data2)
{
return data1+data2;
}
int min(int data1,int data2)
{
return data1-data2;
}
int mul(int data1,int data2)
{
return data1*data2;
}
int div(int data1,int data2)
{
return data1/data2;
}
int main()
{
int data1;
int data2;
char c;
int data;
printf("请输入所要选择的运算:+、-、*、/ \n");
scanf("%c",&c);
printf("请输入数值1\n");
scanf("%d",&data1);
printf("请输入数值2\n");
scanf("%d",&data2);
switch(c){
case '+':
data = add(data1,data2);
printf("%d %c %d = %d\n",data1,c,data2,data);
break;
case '-':
data = min(data1,data2);
printf("%d %c %d = %d\n",data1,c,data2,data);
break;
case '*':
data = mul(data1,data2);
printf("%d %c %d = %d\n",data1,c,data2,data);
break;
case '/':
data = div(data1,data2);
printf("%d %c %d = %d\n",data1,c,data2,data);
break;
default :
printf("运算选择错误\n");
break;
}
system("pause");
return 0;
}
引入库函数后的代码
主函数 calcumentMain.c
#include <stdio.h>
#include "calcumentDemo.h"
int main()
{
int data1;
int data2;
char c;
int data;
printf("请输入所要选择的运算:+、-、*、/ \n");
scanf("%c",&c);
printf("请输入数值1\n");
scanf("%d",&data1);
printf("请输入数值2\n");
scanf("%d",&data2);
switch(c){
case '+':
data = add(data1,data2);
printf("%d %c %d = %d\n",data1,c,data2,data);
break;
case '-':
data = min(data1,data2);
printf("%d %c %d = %d\n",data1,c,data2,data);
break;
case '*':
data = mul(data1,data2);
printf("%d %c %d = %d\n",data1,c,data2,data);
break;
case '/':
data = div(data1,data2);
printf("%d %c %d = %d\n",data1,c,data2,data);
break;
default :
printf("运算选择错误\n");
break;
}
system("pause");
return 0;
}
分装函数代码 calcumentDemo.c
#include <stdio.h>
int add(int data1,int data2)
{
return data1+data2;
}
int min(int data1,int data2)
{
return data1-data2;
}
int mul(int data1,int data2)
{
return data1*data2;
}
int div(int data1,int data2)
{
return data1/data2;
}
分装库函数 calcumentDemo.h
用于函数声明。
#include <stdio.h>
int add(int data1,int data2);
int min(int data1,int data2);
int mul(int data1,int data2);
int div(int data1,int data2);
编译运行结果
为什么要include<stdio.h>,include"calcument.h"
因为 函数中printf,scanf是系统里面已经做好的.。在使用时会调用系统中的这些函数。
而在main函数中,add(),min(),等函数也是之前就已经做好的,在使用时会需要调用。
为什么有的调库是用<>,而有的是用""呢?
<>调库
"<>"的意思是在gcc编译的时候,系统会默认的在下面路径下去找所需调用的函数。
/usr/include
""调库
“xxx”双引号引起的库是指在编译运行的时候,代码调用库函数会优先从当前文件夹下找所需调用的函数。有的话就调用,没有的话就去默认的 /usr/include 下或者 /usr/local/include下去找。
找不到的话就报错。
思考
既然“”双引号调库是优先在当前路径下去寻找,那么能不能把库函数写到 /usr/include 路径下呢?
就像调用printf函数一样,直接gcc就可以编译运行呢?
想要实现这样的执行程序,就需要用到静态库与动态库了,在下一篇文章中博主将会详细介绍。