08 - 条件判断语句

---- 整理自狄泰软件唐佐林老师课程

文章目录

  • 1. 条件判断语句
  • 2. 语法说明
  • 3. 经验
  • 4. 代码

1. 条件判断语句

  • makefile 中支持条件判断语句
    • 可以根据条件的值来决定 make 的执行
    • 可以比较两个不同变量或者变量和常量的值

在这里插入图片描述
注:条件判断语句只能用于控制 make 实际执行的语句;但是,不能控制规则中命令的执行过程。

2. 语法说明

  • 常用形式
ifxxx (arg1,arg2)

在这里插入图片描述

  • 其它
ifxxx "arg1" "arg2"
ifxxx 'arg1' 'arg2'
ifxxx "arg1" 'arg2'
ifxxx 'arg1' "arg2"
.PHONY: testvar1 := A
var2 := $(var1)
var3 :=test:ifeq ($(var1),$(var2)) # ifeq else endif前不能有tab键@echo "var1 == var2"else@echo "var1 != var2"endif

在这里插入图片描述

.PHONY : testvar1 := A
var2 := $(var1)
var3 :=			 # 定义一个没有值的变量test:ifeq ($(var1),$(var2)) # 前面使用空格@echo "var1 == var2"  # 前面使用tabelse@echo "var1 != var2" 	endififneq ($(var2),)@echo "var2 is NOT empty"    else@echo "var2 is empty"    endififdef var2@echo "var2 is NOT empty"    else@echo "var2 is empty"    endififndef var3@echo "var3 is empty"    else@echo "var3 is NOT empty"    endif

在这里插入图片描述

3. 经验

  • 条件判断语句之前可以有空格,但不能有 tab 字符('\t')
  • 在条件语句中不要使用自动变量($@$^$<
  • 一条完整的条件语句必须位于同一个 Makefile 中
  • 条件判断类似于 C 语言中的宏,预处理阶段有效,执行阶段无效
  • make 在加载 makefile 时:
    • 首先计算表达式的值(赋值方式不同,计算方式不同)
    • 根据判断语句的表达式决定执行的内容
.PHONY : testvar1 := 
var2 := $(var1)var3 =		    
var4 = $(var3)  # 递归赋值,无法在预处理时判断是否被定义,所以var4打印出已经被定义test:ifdef var1@echo "var1 is defined"else@echo "var1 is not defined"endififdef var2@echo "var2 is defined"else@echo "var2 is not defined"endififdef var3@echo "var3 is defined"else@echo "var3 is not defined"endififdef var4@echo "var4 is defined"else@echo "var4 is not defined"endif

在这里插入图片描述

.PHONY : testvar1 := 
var2 := $(var1)var3 =		    
var4 = $(var3)  # 递归赋值,无法在预处理时判断是否被定义,所以var4打印出已经被定义
var3 = 3 # make在解析makefile时,完全可以判断出var3是否有值,而不用等到执行期间test:ifdef var1@echo "var1 is defined"else@echo "var1 is not defined"endififdef var2@echo "var2 is defined"else@echo "var2 is not defined"endififdef var3@echo "var3 is defined"else@echo "var3 is not defined"endififdef var4@echo "var4 is defined"else@echo "var4 is not defined"endif

在这里插入图片描述

4. 代码

【08 条件判断语句】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3016435.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

zabbix监控方式(zabbix-trapper)

中文&#xff1a;zabbix采集器&#xff0c;即zabbix sender 。 Zabbix-Trapper 监控方式可以一次批量发送数据给Zabbix Server&#xff0c;与主动模式不同&#xff0c;Zabbix-Trapper 可以让用户控制数据的发送&#xff0c;而不用Zabbix-Agent进程控制&#xff0c;这意味着可以…

品深茶的抗癌功能是否涉及虚假宣传?

品深茶说到底&#xff0c;本质还是中国传统茶叶&#xff0c;茶叶本就是一种含有多种成分的饮品&#xff0c;包括茶多酚、生物碱、氨基酸、有机酸等。这些成分对人体有一定的益处&#xff0c;如抗氧化、抗炎、抗菌等作用。 一些研究表明&#xff0c;茶叶中的某些成分如茶多酚、…

C语言----汉诺塔问题

1.什么是汉诺塔问题 简单来说&#xff0c;就是有三个柱子&#xff0c;分别为A柱&#xff0c;B柱&#xff0c;C柱。其中A柱从上往下存放着从小到大的圆盘&#xff0c;我们需要借助B柱和C柱&#xff0c;将A柱上的所有圆盘转移到C柱上&#xff0c;并且一次只能移动一个圆盘&#…

用户管理中心——数据库设计用户注册逻辑设计

用户管理中心——数据库设计&用户注册逻辑设计 规整项目目录1. 数据库自动生成器的使用实现基本的数据库操作&#xff08;操作user表&#xff09; 2. 注册逻辑的设计(1) 写注册逻辑(2) 实现(3) 测试代码 3. 遇到的问题 规整项目目录 utils–存放工具类&#xff0c;比如加密…

Jsoncpp介绍

1.简介 Jsoncpp 是一个 C 库&#xff0c;用于解析和生成 JSON 数据。它提供了一个易于使用的 DOM&#xff08;Document Object Model&#xff09;风格的 API&#xff0c;允许开发者以树形结构的方式操作 JSON 数据。 Jsoncpp 是一个C库&#xff0c;允许操作JSON值&#xff0c;…

【软测学习笔记】Python入门Day02

&#x1f31f;博主主页&#xff1a;我是一只海绵派大星 &#x1f4da;专栏分类&#xff1a;软件测试笔记 &#x1f4da;参考教程&#xff1a;黑马教程❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ python安装 1、进入Python的官方下载页面&#xff1a; Download Python | Py…

【论文阅读笔记】Mamba模型代码理解

0.开源代码地址 官方实现&#xff1a;state-spaces/mamba (github.com) 最简化实现&#xff1a;johnma2006/mamba-minimal: Simple, minimal implementation of the Mamba SSM in one file of PyTorch. (github.com) 直接实现&#xff1a;alxndrTL/mamba.py: A simple and e…

网络安全与IP地址的关联

网络安全与IP地址之间存在着密不可分的关系。IP地址作为网络通信的基础&#xff0c;对于网络安全的保障具有至关重要的作用。以下将详细探讨网络安全与IP地址之间的关联&#xff0c;以及IP地址在网络安全中的应用。 一、IP地址与网络安全的关系 IP地址是网络通信的基础&#x…

力扣437. 路径总和 III

Problem: 437. 路径总和 III 文章目录 题目描述思路复杂度Code 题目描述 思路 1.定义int类型函数rootSum(root, targetSum)&#xff0c;用于求取每一个节点等于目标函数的路径数&#xff1a; 1.1.易知rootSum(root, targetSum)求出的数量等于rootSum(root.left, targetSum - va…

C语言 main( ) 函数的指针数组形参是怎么回事?

一、问题 在使⽤⼀些开发⼯具⽣成C语⾔⽂件时&#xff0c;主函数 mian( ) 中会有参数&#xff0c;这个参数到底是怎么回事⼉呢&#xff1f; 二、解答 mian( ) 称为主函数&#xff0c;是所有程序运⾏的⼊口。 mian( ) 函数是由系统调⽤的&#xff0c;当处于操作命令状态下&…

【C 数据结构-动态内存管理】4. 无用单元收集(垃圾回收机制)

文章目录 【 1. 问题描述与解决方法 】【 2. 中断回收机制 】 【 1. 问题描述与解决方法 】 问题描述 动态存储管理的运行机制可以概括为&#xff1a;当用户发出申请空间的请求后&#xff0c;系统向用户分配内存&#xff1b;用户运行结束释放存储空间后&#xff0c;系统回收内…

深度学习之基于Tensorflow卷积神经网络智能体操健身系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着人们健康意识的提高和数字化技术的快速发展&#xff0c;智能健身系统逐渐成为健身领域的新趋势。…

MT8370_联发科MTK8370(Genio 510)芯片性能规格参数

MT8370芯片是一款利用超高效的6nm制程工艺打造的边缘AI平台&#xff0c;具有强大的性能和功能。这款芯片集成了六核CPU(2x2.2 GHz Arm Cortex-A78 & 4x2.0 GHz Arm Cortex-A55)、Arm Mali-G57 MC2 GPU、集成的APU(AI处理器)和DSP&#xff0c;以及一个HEVC编码加速引擎&…

C语言 动态内存管理

目录 1. C/C程序的内存分配2. 动态内存分配的作用3. malloc - 分配内存4. free - 释放内存5. calloc - 分配并清零内存6. realloc - 调整之前分配的内存块7. 常见的动态内存的错误7.1 对空指针解引用7.2 对动态开辟空间的越界访问7.3 对非动态开辟内存使用free7.4 使用free释放…

代码随想录算法训练营第十九天:二叉树go

代码随想录算法训练营第十九天&#xff1a;二叉树go 226.翻转二叉树 力扣题目链接(opens new window) 翻转一棵二叉树。 ​​ 这道题目背后有一个让程序员心酸的故事&#xff0c;听说 Homebrew的作者Max Howell&#xff0c;就是因为没在白板上写出翻转二叉树&#xff0c;最…

jmeter分布式集群压测

目的&#xff1a;通过多台机器同时运行 性能压测 脚本&#xff0c;模拟更好的并发压力 简单点&#xff1a;就是一个人&#xff08;控制机&#xff09;做一个项目的时候&#xff0c;压力有点大&#xff0c;会导致结果不理想&#xff0c;这时候找几个人&#xff08;执行机&#x…

Parts2Whole革新:多参照图定制人像,创新自定义肖像生成框架!

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享&#xff0c;与你一起了解前沿深度学习信息&#xff01; Parts2Whole革新&#xff1a;多参照图定制人像&#xff0c;创新自定义肖像生成框架&#xff01; 引言&#xff1a;探索多条件人像生成的新篇章 在数字内容创作…

Autosar PNC网络管理配置-UserData的使用

文章目录 前言ComComSignalComIPdu CanNmSignal Mapping总结 前言 之前配置的网络管理报文中的data都由ComM管理&#xff0c;后面客户新增了需求&#xff0c;最后两个byte需要发送Wakeup Reason&#xff0c;本文记录一下相关配置的修改 Com ComSignal 之前配置的PN_TX&…

应用层协议——HTTP协议

1. 认识HTTP协议 HTTP&#xff08;Hyper Text Transfer Protocol&#xff09;协议又叫做超文本传输协议&#xff0c;是一个简单的请求-响应协议&#xff0c;HTTP通常运行在TCP之上。 超文本的意思就是超越普通的文本&#xff0c;http允许传送文字&#xff0c;图片&#xff0c…

XAMPP是什么?XAMPP好不好用?

XAMPP是一个免费且开源的软件套件&#xff0c;用于在个人计算机上轻松搭建和运行 Apache 服务器、MySQL 数据库、PHP 和 Perl&#xff0c;让用户可以在个人电脑上搭建服务器环境的平台。 XAMPP的由来是 X(表示跨平台)、Apache、MySQL、PHP 和 Perl 的首字母缩写。 它集成了这…