有一说一,只是为了完成课业,实际工作中,makefile好像已经完全被cmake给替代了。
先写好三段代码
//sumDay.c
#include <stdio.h>
int n(int y,int m,int d){
int i,sum=0;
int a[]={0,31,0,31,30,31,30,31,31,30,31,30,31};
if((y%4==0&&y%100!=0)||(y%400==0))a[2]=29;
else a[2]=28;
for(i=0;i<m;i++)sum+=a[i];
return sum+d;
}
//main.c
#include <stdio.h>
#include "sumDay.h"
void main()
{
int y,m,d;
while(printf("输入年月日,用逗号隔开:")&&scanf("%d,%d,%d",&y,&m,&d)==3){
if((y%4==0&&y%100!=0)||(y%400==0)){
if(m>12||m<=0||d<=0||y<=0
||((m==1||m==3||m==5||m==7||m==8||m==10||m==12)&&d>31)
||((m==4||m==6||m==9||m==11)&&d>30)
||(m==2&&d>29)
){printf("输入错误,非有效天数,请重新输入。\n");continue;}
}else{
if(m>12||m<=0||d<=0||y<=0
||((m==1||m==3||m==5||m==7||m==8||m==10||m==12)&&d>31)
||((m==4||m==6||m==9||m==11)&&d>30)
||(m==2&&d>28)
){printf("输入错误,非有效天数,请重新输入。\n");continue;}
}
printf("%d年%d月%d号是今年的第%d天。\n",y,m,d,n(y,m,d));
}
}
//sumDay.h
#ifndef SUMDAY_H
#define SUMDAY_H
int n(int y,int m,int d);
#endif // SUMDAY_H
MakeFile文件要注意,他的每一条命令行前边缩进都需要使用tab键打出,而某些编辑器会自动将tab缩进变成多个空格缩进。
# makefile
CC=gcc
CFLAGS=
OBJS=main.o sumDay.o
all:sumDay
sumDay:$(OBJS)
$(CC) $(CFLAGS) $^ -o $@
main.o:main.c
$(CC) $(CFLAGS) -c $< -o $@
sumDay.o:sumDay.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -rf hello *.o
最后make,然后就可以用了。
make
./sumDay