make和makefile

make是一个命令,makefile是一个文件

makefile (m大小写都可)

makefile文件里面包括 依赖关系,依赖方法
首行写依赖关系,次行以tab开头,后面跟上依赖方法
在这里插入图片描述

make命令

makefile文件自顶向下扫描,执行make命令只会执行第一个依赖方法,形成第一个目标文件
make 目标文件名 可形成makefile文件中任一目标文件

伪目标文件

总是被执行的:意思就是总是会根据依赖关系,执行依赖方法,我们习惯设置clean为.PHONY
例如:在这里插入图片描述
make clean总是可以被执行
但是make:
在这里插入图片描述
则会提示你文件是最新的

那么makefile是如何判断文件是最新的呢?
stat一个文件时,会显示三个时间
Access:文件最近被访问的时间(可能不会时时更新,因为文件会被频繁访问)
Modify:文件内容最近被修改的时间
Change:文件属性最近被修改的时间

根据依赖关系,源文件有一个Modify time,目标文件也有一个Modify time,如果目标文件的时间晚于源文件的时间,那就是最新的,否则就可以执行依赖关系

进度条小作业

缓冲区

在这里插入图片描述
这段代码在执行过程中,会发现系统先sleep了一秒,然后才把printf里面的内容打印了出来

因为C语言是会给我们提供输出缓冲区的(可以认为是C语言提供的一段存储空间),根据特定的刷新策略,来进行刷新,比如上面的代码,是对显示器设备输出,显示器设备的刷新策略是行刷新,碰到\n,就把\n之前的字符全都显示出来。,没有\n,所以printf已经执行完毕,但内容并未显示到显示器上,一直等到程序结束,才显示出来。
如果想要立马刷新,在printf后面加上fflush(stdout)即可。

换行vs回车

换行的意思是直接换到下一行,不回到本行开始
回车的意思是直接回到本行开始,没有换到下一行
而\n就是换行+回车
\r就是回车,所以如果用\r结尾,并且不刷新则不会在屏幕上显示

进度条代码

#include <stdio.h>
#include <unistd.h> 

int main()
{
    char str[102]={};
    int cnt=0;
    const char* lable="|/-\\";
    while(cnt<=100)
    {
        printf("[%-100s][%d%%]%c\r",str,cnt,lable[cnt%4]);
        fflush(stdout);
        str[cnt++]='#';
        usleep(100000);
    }
    printf("\n");

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值