当前位置: 首页 > news >正文

Linux的makefile与进度条小程序实践

makefile

  • make命令
    • 主要功能
    • 使用方法
    • 常用选项
  • makefile文件
    • 基本结构
    • 使用案例
    • 变量定义
    • 内置变量(即系统定义的确定变量)
    • 伪目标
    • 模式规则
    • 条件语句
    • 注释
    • makefile中的常用函数
  • 进度条小程序
    • 创建文件
    • 编辑.h文件
    • 编辑.c文件
    • 创建main函数
    • makefile文件
    • 执行效果

make命令

在linux中,make 是一个自动化构建工具,主要用于管理和控制项目的编译过程。它通过读取 Makefile(makefile) 文件中的规则和指令,自动执行所需的命令,以便构建可执行程序、库或其他文件。

主要功能

自动化构建:通过简单的命令(如 make),make 可以根据 Makefile 中的定义自动完成编译和链接过程。

处理依赖关系:make 会检查文件之间的依赖关系,只重新编译那些已更改的源文件,节省时间和资源。

多平台支持:make 是一种标准工具,可以在不同的 Unix-like 系统上使用。

使用方法

基本的 make 命令格式如下:

make [target]

target:要构建的目标。如果不指定目标,make 默认构建第一个目标。

常用选项

-f FILE:指定使用的 Makefile 文件,默认是 Makefile 或 makefile。
-j N:并行构建,N 是并行执行的任务数量。
-k:即使某个目标构建失败,也继续构建其他目标。
-n:显示将要执行的命令,但不实际执行。
-B:强制所有目标重新构建。

makefile文件

在 Makefile 中,语法结构相对简单,主要包括目标、依赖关系和命令。以下是一些基本语法元素:

基本结构

Makefile 的基本结构由规则、目标、依赖和命令组成:

target: dependenciescommand

target:要生成的文件或目标,可以是可执行文件、对象文件等。
dependencies:生成目标所依赖的文件列表。
command:用于生成目标的命令,必须TAB 开头。

使用案例

# 一个简单的示例 MakefileCC = gcc                # 指定编译器
CFLAGS = -Wall -g      # 编译选项# 定义目标
all: myprogram# 规则
myprogram: main.o utils.o$(CC) $(CFLAGS) -o myprogram main.o utils.o# 依赖规则
main.o: main.c$(CC) $(CFLAGS) -c main.cutils.o: utils.c$(CC) $(CFLAGS) -c utils.c# 清理命令
clean:rm -f myprogram *.o

变量定义

变量可以使用 = 或 := 定义

VAR = value          # 延迟赋值
VAR := value         # 立即赋值

变量在命令中可以用 $(VAR) 访问

$(CC) $(CFLAGS) -o myprogram main.o utils.o

内置变量(即系统定义的确定变量)

$@:目标文件的名称。
$<:第一个依赖文件的名称。
$^:所有依赖文件的名称。

伪目标

伪目标在 Makefile 中是一种特殊的目标,通常用于执行一些不会生成实际文件的命令,如清理、安装等。伪目标不依赖于文件的存在或更新,它们的存在主要是为了便于管理和执行特定的操作。

1. 伪目标的定义

伪目标通常使用 .PHONY 关键字进行声明,尽管在现代的 Make 工具中,即使不使用 .PHONY,伪目标仍然可以正常工作,但为了确保无论目标文件是否存在,命令都能被执行,建议声明它们为伪目标。

.PHONY: clean install
2. 用法示例

2.1 清理目标
清理目标是最常见的伪目标之一,用于删除生成的文件,如可执行文件和中间文件:

.PHONY: cleanclean:rm -f myprogram *.o

在这个示例中,运行 make clean 将会执行 rm -f myprogram *.o 命令,清除生成的文件。

2.2 安装目标
安装目标通常用于将编译好的文件复制到系统的某个目录:

.PHONY: installinstall:cp myprogram /usr/local/bin/

运行 make install 将把可执行文件复制到 /usr/local/bin/ 目录。

2.3 其他常用伪目标
all:通常是默认目标,表示构建所有需要的目标。
test:用于运行测试。

.PHONY: all testall: myprogramtest:./run_tests.sh
3. 伪目标的优点

独立于文件:伪目标不依赖于文件的存在,因此即使与目标同名的文件存在,也不会影响命令的执行。

提高可读性:伪目标使得 Makefile 更加清晰,便于维护和理解。

灵活性:可以根据需要定义任意数量的伪目标,以实现不同的功能。

4. 注意事项

尽管使用伪目标非常方便,但要注意确保每个伪目标的命令是无状态的,也就是说,每次执行该命令都应该产生相同的结果。
在定义伪目标时,应避免与实际文件名冲突,虽然不会影响功能,但可能会造成混淆。

模式规则

模式规则是 Makefile 中的一种强大特性,允许用户定义一组规则,用于处理一类文件的生成。这种规则通过模式匹配来简化和自动化构建过程,尤其是在处理大量文件时非常有效。

1. 什么是模式规则

模式规则的基本形式是:

pattern: prerequisitesrecipe

其中,pattern 是一个带有通配符的模式,可以使用 % 来匹配任何字符串。

2. 模式规则的语法

% 可以代表零个或多个字符。
模式规则的目标可以是多种类型的文件。
通常用于生成目标文件,例如从源文件生成对象文件。

3. 例子

3.1 基本示例
假设我们有多个 C 源文件,想要编译成相应的对象文件,可以使用如下模式规则:

%.o: %.cgcc -c $< -o $@

%.o 是目标模式,表示任意以 .o 结尾的文件。
%.c 是先决条件模式,表示任意以 .c 结尾的文件。
$< 是第一个先决条件,表示与目标匹配的源文件。
$@ 是当前目标的名字。

当你运行 make 并且有 file1.c 和 file2.c 时,Make 会自动生成 file1.o 和 file2.o。

3.2 多文件规则
可以使用模式规则一次性处理多个文件:

OBJ = file1.o file2.o file3.oall: $(OBJ)%.o: %.cgcc -c $< -o $@

在这个例子中,make all 会依次处理 file1.c、file2.c 和 file3.c,生成对应的对象文件。

4. 复合模式规则

可以在同一规则中定义多个目标。例如:

program: main.o utils.ogcc $^ -o program%.o: %.cgcc -c $< -o $@

这里,program 依赖于 main.o 和 utils.o,而 %.o: %.c 模式规则则用于生成这些对象文件。

条件语句

Makefile 支持条件语句,可以根据不同条件选择执行的命令:

1. ifeq

ifeq 用于判断两个字符串是否相等。

ifeq (条件1, 条件2)# 如果条件1 和 条件2 相等,执行的命令
endif

示例

VAR = valueifeq ($(VAR), value)MESSAGE = "VAR is value"
elseMESSAGE = "VAR is not value"
endif
2.ifneq

ifneq 用于判断两个字符串是否不相等。

ifneq (条件1, 条件2)# 如果条件1 和 条件2 不相等,执行的命令
endif

示例

VAR = valueifneq ($(VAR), other_value)MESSAGE = "VAR is not other_value"
endif
3. ifdef

ifdef 用于判断一个变量是否已定义。

ifdef VAR# 如果 VAR 已定义,执行的命令
endif

示例

ifdef VARMESSAGE = "VAR is defined"
elseMESSAGE = "VAR is not defined"
endif
4. ifndef

ifndef 用于判断一个变量是否未定义。

ifndef VAR# 如果 VAR 未定义,执行的命令
endif

示例

ifndef VARMESSAGE = "VAR is not defined"
endif

注释

注释以 # 开头,make 会忽略这一行的内容:

# 这是一个注释

makefile中的常用函数

常用的函数,可以帮助处理变量、文件和字符串等。下面是一些常见函数的语法和用法:

1. wildcard

语法: $(wildcard pattern…)

用途: 返回匹配模式的所有文件名。

示例:

SRCS = $(wildcard *.c)

这将把当前目录下所有的 .c 文件名存入 SRCS 变量中。

2. patsubst

语法: $(patsubst pattern, replacement, text)

用途: 将 text 中所有匹配 pattern 的部分替换为 replacement。

示例:

OBJS = $(patsubst %.c, %.o, $(SRCS))

这将把 SRCS 中的 .c 文件名转换为 .o 文件名。

3. subst

语法: $(subst find, replace, text)

用途: 在 text 中替换所有 find 字符串为 replace 字符串。

示例:

NEW_VAR = $(subst foo, bar, foo_baz)

NEW_VAR 的值将是 bar_baz。

4. filter

语法: $(filter pattern…, text)

用途: 从 text 中筛选出与 pattern 匹配的单词。

示例:

SRC_FILES = file1.c file2.c file3.h
C_FILES = $(filter %.c, $(SRC_FILES))

C_FILES 将只包含 file1.c 和 file2.c。

5. filter-out

语法: $(filter-out pattern…, text)

用途: 从 text 中排除与 pattern 匹配的单词。

示例:

SRC_FILES = file1.c file2.c file3.h
C_FILES = $(filter-out %.h, $(SRC_FILES))

C_FILES 将只包含 file1.c 和 file2.c。

6. sort

语法: $(sort list)

用途: 对 list 中的单词进行排序,并去重。

示例:

FILES = b.c a.c c.c a.c
SORTED_FILES = $(sort $(FILES))

SORTED_FILES 将是 a.c b.c c.c。

7. join

语法: $(join list1, list2)

用途: 将两个列表合并为一个列表,按空格分隔。

示例:

A = a1 a2
B = b1 b2
C = $(join $(A), $(B))

C 将是 a1 b1 a2 b2。

8. shell

语法: $(shell command)

用途: 执行 shell 命令并返回其输出。

示例:

CURRENT_DIR = $(shell pwd)

CURRENT_DIR 将是当前工作目录的路径。

9. addprefix

语法: $(addprefix prefix, names…)

用途: 在 names 的每个元素前添加 prefix。

示例:

OBJS = $(addprefix obj/, $(SRCS))

如果 SRCS 是 file1.c file2.c,那么 OBJS 将是 obj/file1.c obj/file2.c。

10. addsuffix

语法: $(addsuffix suffix, names…)

用途: 在 names 的每个元素后添加 suffix。

示例:

FILES = $(addsuffix .bak, $(SRCS))

这将把每个源文件名后加上 .bak 后缀。

进度条小程序

创建文件

使用touch创建各种文件

在这里插入图片描述
在这里插入图片描述

编辑.h文件

写出两个版本的进度条的进度条函数,v1版本是单纯的进度条函数,用来测试进度条逻辑,v2版本则用来实际使用,all为总进度,now为当前进度,以此判断进度条的位置。

在这里插入图片描述

编辑.c文件

1,创建bar进度条,用=代表进度,长度为101,包含\0
2,创建进度百分比,显示到了什么程度
3,创建进度圈圈,以str中的字符不断变化代表函数在执行,有时进度太慢进度条不动,实际是在执行的
4,\r代表从头打印
5,fflush函数刷新缓冲区打印进度条
6,usleep函数休眠控制速度

在这里插入图片描述
在这里插入图片描述

创建main函数

1,all代表总进度
2,speed代表网速
3,now代表现在下载量

在这里插入图片描述

makefile文件

@代表隐藏命令,但是命令会执行

1,第一条代表将.o文件链接成可执行文件
2,第二条代表将.c文件都生成.o文件
3,第三条clean清理生成的文件
4,test展示生成的文件
在这里插入图片描述

执行效果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

相关文章:

Linux的makefile与进度条小程序实践

makefile make命令主要功能使用方法常用选项 makefile文件基本结构使用案例变量定义内置变量(即系统定义的确定变量)伪目标模式规则条件语句注释makefile中的常用函数 进度条小程序创建文件编辑.h文件编辑.c文件创建main函数makefile文件执行效果 make命令 在linux中&#xff…...

latex写作基础

参考&#xff1a;https://www.bilibili.com/video/BV1ku4y1X7Rz 在线latex&#xff1a;https://cn.overleaf.com/ tex文件基本结构 \documentclass{article} % 文档类型&#xff0c;&#xff05;是注释\usepackage{graphicx} % 导入各种包&#xff0c;这里是graphicx包\titl…...

Chromium HTML5 新的 Input 类型email对应c++

一、Input 类型: email email 类型用于应该包含 e-mail 地址的输入域。 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>test</title> </head> <body><form action"demo-form.php"…...

嵌入式Linux的AXI平台(platform)驱动教程

本文以JFMQL100的Linux系统的AXI接口的平台驱动为例&#xff0c;介绍嵌入式Linux的平台驱动编写、测试软件编写以及验证方式。本文的方法适用于任意嵌入式芯片Linux的物理地址映射的平台&#xff08;platform&#xff09;驱动的编写、测试与应用。 本文中AXI的开始地址为0x8000…...

什么是Java策略模式?与Spring的完美结合

文章目录 什么是策略模式&#xff1f;策略模式的组成部分&#xff1a; 策略模式的示例在Spring中的妙用1. 使用Spring配置2. 在上下文中选择策略3. 动态切换策略 总结推荐阅读文章 在软件设计中&#xff0c;策略模式是一种非常常见的设计模式&#xff0c;它能够让算法的变化独立…...

[Go实战]:HTTP请求转发

前言 在Web应用开发中&#xff0c;请求转发是一项核心且常见的功能&#xff0c;用于负载均衡、服务拆分、路由重定向和业务逻辑处理。通过在Go语言中封装一个通用的HTTP请求转发方法&#xff0c;我们可以简化代码结构&#xff0c;提升可读性、可维护性和可扩展性。本文将探讨如…...

【C++单调栈 贡献法】907. 子数组的最小值之和|1975

本文涉及的基础知识点 C单调栈 LeetCode907. 子数组的最小值之和 给定一个整数数组 arr&#xff0c;找到 min(b) 的总和&#xff0c;其中 b 的范围为 arr 的每个&#xff08;连续&#xff09;子数组。 由于答案可能很大&#xff0c;因此 返回答案模 109 7 。 示例 1&#x…...

极狐GitLab 17.5 发布 20+ 与 DevSecOps 相关的功能【二】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…...

Django 5 增删改查 小练习

1. 用命令创建目录和框架 django-admin startproject myapp cd myapp py manage.py startapp app md templates md static md media 2. Ai 生成代码 一、app/models.py from django.db import modelsclass Product(models.Model):name models.CharField(max_length255, verb…...

【STM32 Blue Pill编程实例】-I2C主从机通信(中断、DMA)

I2C主从机通信(中断、DMA) 文章目录 I2C主从机通信(中断、DMA)1、STM32的I2C介绍2、I2C模式3、STM32 I2C 数据包错误检查4、STM32 I2C 错误情况5、STM32 I2C中断6、STM32 I2C 主发送和接收(Tx 和 RX)6.1 I2C 轮询模式6.2 I2C 中断模式6.3 I2C DMA 模式6.4 STM32 I2C 设备…...

基于SSM+小程序的旅游社交登录管理系统(旅游4)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 ​ 本旅游社交小程序功能有管理员和用户。管理员有个人中心&#xff0c;用户管理&#xff0c;每日签到管理&#xff0c;景点推荐管理&#xff0c;景点分类管理&#xff0c;防疫查询管理&a…...

高级java每日一道面试题-2024年10月24日-JVM篇-说一下JVM有哪些垃圾回收器?

如果有遗漏,评论区告诉我进行补充 面试官: 说一下JVM有哪些垃圾回收器? 我回答: 1. Serial收集器 特点&#xff1a;Serial收集器是最古老、最稳定的收集器&#xff0c;它使用单个线程进行垃圾收集工作。在进行垃圾回收时&#xff0c;它会暂停所有用户线程&#xff0c;即St…...

Java-内部类

个人主页 学习内部类&#xff08;Inner Class&#xff09;是Java编程中一项重要且强大的特性&#xff0c;它允许你在一个类的内部定义另一个类。内部类提供了一种将逻辑上相关的类组织在一起的方式&#xff0c;增加了代码的封装性和可读性。接下来带领大家进入內部类的学习。 …...

flutter集成极光推送

一、简述 极光推送&#xff0c;英文简称 JPush&#xff0c;免费的第三方消息推送服务&#xff0c;官方也推出众多平台的SDK以及插件。 参考链接 名称地址客户端集成插件客户端集成插件 - 极光文档 二、操作步骤 2.1 添加插件 flutter项目中集成官方提供的 极光推送flutte…...

D. Skipping 【 Codeforces Round 980 (Div. 2)】

D. Skipping 思路: 注意到最佳策略是先往右跳转到某处&#xff0c;然后按顺序从右往左把没有遇到过的题目全部提交。 将从 i i i跳转到 b [ i ] b[i] b[i]视为通过边权(代价)为 a [ i ] a[i] a[i]的路径&#xff0c;而向左的路径边权都是 0 0 0&#xff1b;目的是找到到从出发…...

【golang】学习文档整理

Binding | Echo 传值时注意零值和传空的区别 需要validate require 和 设置指针配合使用 保证不同值的返回不同 不能客户端传0值被判断为空 测试时要空值零值去测试字段是否正确返回 返回错误是否符合预期...

动态规划-子序列问题——1218.最长定差子序列

1.题目解析 题目来源&#xff1a;1218.最长定差子序列——力扣 测试用例 2.算法原理 1.状态表示 本题可以看作是寻找一个等差序列&#xff0c;并且公差给出&#xff0c;这里并不是普通的使用一个dp表&#xff0c;而是将arr与dp表同时存储于一个哈希表&#xff0c;arr[i]映射dp…...

双子塔楼宇可视化系统:提升建筑管理与运营效率

利用图扑可视化技术对双子塔楼宇的各项功能进行实时监控和管理。通过数据分析优化资源配置&#xff0c;提高能源效率&#xff0c;增强楼宇安全性&#xff0c;实现智能化运营。...

32位的ARMlinux的4字节变量原子访问问题

在32位的ARM Linux内核中&#xff0c;4字节整型变量通常被认为是原子操作。 这主要是因为&#xff1a; 对齐要求&#xff1a;在ARM架构中&#xff0c;4字节整型变量通常是按4字节对齐存储的&#xff0c;这样可以确保在读取和写入时&#xff0c;CPU能够以单个指令完成操作。 …...

用哪种建站程序做谷歌SEO更容易?

做网站很容易&#xff0c;但做一个能带来流量和订单的网站就没那么简单了。尤其是在谷歌SEO优化方面&#xff0c;不同的建站程序对SEO的支持程度也不同。在这方面&#xff0c;WordPress和Shopify无疑是最佳选择。 WordPress作为一个内容管理系统&#xff08;CMS&#xff09;&am…...

IPsec简单介绍

VPN相关介绍 VPN&#xff1a;虚拟私有网络 例如&#xff1a;像这种不加密的 PPTPL2TP ------- 一般用在windows server 服务端&#xff08;但是大多数企业不用这个&#xff09; 假如总公司内部的PC1要去访问分公司内部的PC2&#xff08;一般用在公司服务器有内网的服务&#…...

颠覆级AI:10秒生成超清视频

颠覆级AI&#xff1a;10秒生成超清视频 Pyramid-Flow 是一款开源 AI 视频生成神器&#x1f4bb;&#xff0c;只需文字或图片即可极速生成高清视频&#x1f3a5;&#xff01;高效、高清、资源需求低&#xff0c;适合创作广告、教学视频等多种用途&#x1f680;&#xff0c;快来…...

《西安科技大学学报》

《西安科技大学学报》主要刊载安全科学与工程、矿业工程、建筑与土木工程、地质与环境工程、测绘工程、材料科学与工程、化学与化工、机械工程、电气工程及自动化、通信与信息工程、计算机科学与工程、矿业经济管理等专业领域内具有创新性的学术论文和科研成果。 来稿必须符合以…...

redis详细教程(2.List教程)

List是一种可以存储多个有序字符串的数据类型&#xff0c;其中的元素按照顺序排列&#xff08;可以重复出现&#xff09;&#xff0c;可以通过数字索引来访问列表中的元素&#xff0c;索引可以从左到右或者从右到左。 Redis 列表可以通过两种方式实现&#xff1a;压缩列表&…...

电子电气架构 --- 电气系统工程

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…...

15-4连续子串和的整除问题

问题描述 小M是一个五年级的小学生&#xff0c;今天他学习了整除的知识&#xff0c;想通过一些练习来巩固自己的理解。他写下了一个长度为 n 的正整数序列 a_0, a_1, ..., a_{n-1}&#xff0c;然后想知道有多少个连续子序列的和能够被一个给定的正整数 b 整除。你能帮小M解决这…...

Spring源码:Bean创建、Bean获取

Bean是怎么被创建&#xff0c;如何获取Bean&#xff0c;基于Spring 5.3.24版本&#xff0c;Spring Boot 可用 2.7.6 结论&#xff1a; 创建&#xff1a;非懒加载的单实例bean在容器创建的时候创建&#xff0c;通过beanFactory的doGetBean方法&#xff0c;利用反射进行创建&…...

MetaArena推出《Final Glory》:引领Web3游戏技术新风向

随着区块链技术的日益成熟&#xff0c;Web3游戏成为了游戏产业探索的新方向&#xff0c;将去中心化经济与虚拟世界结合在一起&#xff0c;形成了一个全新的生态体系。然而&#xff0c;尽管Web3游戏展示了令人兴奋的可能性&#xff0c;但其背后的技术障碍依旧严峻&#xff0c;特…...

玩转Shodan:深度挖掘特定漏洞与脆弱资产的实战技巧

内容预览 ≧∀≦ゞ Shodan进阶使用之发现并解锁隐藏的脆弱资产声明导语VNC未授权访问查询被黑的网站查询思科未授权设备查询MongoDB未授权访问搜索后台管理页面结语 Shodan进阶使用之发现并解锁隐藏的脆弱资产 声明 笔记内容参考了B站UP主泷羽sec的学习视频&#xff0c;如有侵…...

Java程序设计:spring boot(8)——API ⽂档构建⼯具 - Swagger2

目录 1 环境整合配置 2 Swagger2 常⽤注解说明 2.1 Api 2.2 ApiOperation 2.3 ApiImplicitParams 2.4 ApiResponses 2.5 ApiModel 3 用户模块注解配置 3.1 Controller 使用注解 3.2 JavaBean 使用注解 4 Swagger2 接⼝⽂档访问 由于 Spring Boot 能够快速开发、便捷…...

营销型网站的三元素/seo关键词优化方法

将以下代码复制粘贴到txt文件中&#xff0c;另存为bat格式&#xff0c;并将文件编码格式修改为ANSI&#xff0c;跟要处理的文件放一个文件夹内运行。 代码中制定的是删除1,2行&#xff0c;可根据需求自行修改。 echo off rem 根据指定的行号范围删除多个txt文件里的连续多行内…...

天津电商网站建设/市场营销网络

在此示例中&#xff0c;您可以获取网页上所有出现的电子邮件地址。 如果您必须更改站点的特定页面或子部分的电子邮件地址&#xff0c;则很有用。 也可能对从网页上筛选爬网电子邮件地址有用&#xff0c;尽管这不是我在这里要实现的目标。 查看更多jQuery .each示例 。 i 不敏感…...

网络营销内容有哪些方面/seo网站排名推广

问题&#xff1a; 项目中 前端传JSON数据到后端接口时 数据尾部多了一个等于号 解决办法&#xff1a; 前端 设置请求体类型 以及 数据格式 后端也要指定 接受数据 的格式 在写前后端接口的时候&#xff0c;我的前端将表单的数据封装后转成JSON格式 想着传到后端来解析一波 前端…...

网站门户是什么意思/百度没有排名的点击软件

两个可能的病毒现象求助&#xff01;一 我在公司局域网上的计算机近来发现启动IE或者其他程序明显变慢&#xff0c;后检查发现如果关掉网络连接就正常了&#xff0c;打开连接后问题又出现了&#xff0c;不知何故&#xff0c;如何解决&#xff1f;(win2k sp4)二 我的家里的计算机…...

eclipse做购物网站/福州seo技术培训

对于刚开始学QT的同学&#xff0c;在网上搜索许久之后会发现&#xff1a;一个简 单的 Qt 程序下面这个小程序&#xff0c;估计大家会感到比较亲切。似乎有相当多的中文用户尝试写过这样的代码&#xff1a;#include #include int main(int argc, char **argv){QApplication app(…...

wordpress 添加百度统计/佛山seo关键词排名

建筑模型设计制作实践室带锯、圆盘锯安全操作规程一、开机前1、检查锯齿是否变钝&#xff0c;固定锯片的螺丝是否坚固&#xff0c;锯条是否绷紧适中。2、接通电源&#xff0c;检查转动方向是否正确。3、根据锯切需要&#xff0c;调整锯条、档板等至合适位置&#xff0c;做好锯切…...