- 建立C文件
1.1 main.c主要用来调用相关的函数
#include <stdio.h>
#include "input.h"
#include "calc.h"
int main(int arg, char *argv[])
{
int a, b;
char c;
input(&a, &c, &b);
switch (c) {
case '+':
printf("%d + %d = %d\r\n", a, b, calc_add(a, b));
break;
case '-':
printf("%d - %d = %d\r\n", a, b, calc_dec(a, b));
break;
case '*':
printf("%d * %d = %d\r\n", a, b, calc_mux(a, b));
break;
}
return 0;
}
1.2 input.c和input.h主要用来实现输入交互及相应声明
input.c
include <stdio.h>
void input(void *para1, void *para2, void *para3)
{
printf("Please input a calcuate expression:");
scanf("%d %c %d", (int *)para1, (char *)para2, (int *)para3);
}
input.h
#ifndef __INPUT_H__
#define __INPUT_H__
void input(void *para1, void *para2, void *para3);
#endif
1.3 calc.c和calc.h主要用来实现几种简单的计算及相应声明
clac.c
#include <math.h>
int calc_add(int para1, int para2)
{
return (para1 + para2);
}
int calc_dec(int para1, int para2) {
return (para1 - para2);
}
int calc_mux(int para1, int para2)
{
return(para1 * para2);
}
calc.h
#ifndef __CALC_H__
#define __CALC_H__
int calc_add(int para1, int para2);
int calc_dec(int para1, int para2);
int calc_mux(int para1, int para2);
#endif
- 编写Makefile文件并执行make命令,并运行程序
2.1 Makefile文件
main:main.o calc.o input.o
gcc -o main main.o calc.o input.o
main.o:main.c
gcc -c main.c
calc.o:calc.c
gcc -c calc.c
input.o:input.c
gcc -c input.c
clean:
rm *.o
rm main
2.2 执行make命令
glen@ubuntu:~/calc$ ls
calc.c calc.h input.c input.h main.c Makefile
glen@ubuntu:~/calc$ make
gcc -c main.c
gcc -c calc.c
gcc -c input.c
gcc -o main main.o calc.o input.o
glen@ubuntu:~/calc$ ./main
Please input a calcuate expression:4 * 1235678
4 * 1235678 = 4942712
这里可程序执行正常。
- 修改Makefile文件
4.1 把所有目标文件*.o使用变量替代,执行编译
Makefile
objects:=main.o calc.o input.o
main:$(objects)
gcc -o main $(objects)
main.o:main.c
gcc -c main.c
calc.o:calc.c
gcc -c calc.c
input.o:input.c
gcc -c input.c
clean:
rm *.o
rm main
glen@ubuntu:~/calc$ make clean
rm *.o
rm main
glen@ubuntu:~/calc$ make
gcc -c main.c
gcc -c calc.c
gcc -c input.c
gcc -o main main.o calc.o input.o
以上编译成功
4.2 把所有目标文件*.o的依赖及生成文件使用%.o:%.c替代,并把编译指令改为"gcc -c $^ -o $@"
Makefile
objects:=main.o calc.o input.o
main:$(objects)
%.o : %.c
gcc -c $^ -o $@
.PHONY clean:
rm *.o
rm main
glen@ubuntu:~/calc$ make
gcc -c main.c -o main.o
gcc -c calc.c -o calc.o
gcc -c input.c -o input.o
cc main.o calc.o input.o -o main
以上编译成功