函数定义及调用
来源:互联网 发布:工时记录软件 编辑:程序博客网 时间:2024/06/06 09:20
1 makefile中支持函数的概念
- make解释器提供了一系列的函数供makefile调用
- 在makefile中支持自定义函数实现,并调用执行
- 通过define关键字实现自定义函数
2 自定义函数的语法
3 深入理解自定义函数
- 自定义函数是一个多行变量,无法直接调用
- 自定义函数是一种过程调用,没有任何的返回值
- 自定义函数用于定义命令集合,并应用于规则中
编程实验:自定义函数
.PHONY : testdefine func1 @echo "My name is $(0)"endefdefine func2 @echo "My name is $(0)" @echo "Param 1 => $(1)" @echo "Param 2 => $(2)"endefvar := $(call func1)new := $(func1)test : @echo "new => $(new)" @echo "var => $(var)" $(call func1) #@echo My name is func1 $(call func2, D.T.Software, delphi_tang)输出结果:new => @echo My name is var => @echo My name is func1My name is func1My name is func2Param 1 => D.T.SoftwareParam 2 => delphi_tang
4 make解释器中的预定义函数
- make的函数提供了处理文件名、变量和命令的函数
- 可以在需要的地方调用函数来处理指定的参数
- 函数在调用的地方被替换为处理结果
预定义函数的调用
问题:为什么自定义函数和预定义函数的调用形式完全不同?
本质剖析
- makefile中不支持真正意义上的自定义函数
- 自定义函数额本质是多行变量
- 预定义的call函数在调用时将参数传递给多行变量
- 自定义函数是call函数的实参,并在call中被执行
编程实验:函数剖析
.PHONY : testdefine func1 @echo "My name is $(0)"endefdefine func2 @echo "My name is $(0)"endefvar0 := $(func1)var1 := $(call func1)var2 := $(call func2)var3 := $(abspath ./)var4 := $(abspath test.cpp)test : @echo "var0 => $(var0)" @echo "var1 => $(var1)" @echo "var2 => $(var2)" @echo "var3 => $(var3)" @echo "var4 => $(var4)"输出结果:var0 => @echo My name isvar1 => @echo My name is func1var2 => @echo My name is func2var3 => /home/aston/comeonvar4 => /home/aston/comeon/test.cpp
5 小结
- make解释器提供了一些列的函数供makefile调用
- 自定义函数是一个多行变量,无法直接调用
- 自定义函数用于定义命令集合,并应用于规则中
- 预定义的call函数在调用时将参数传递给多行变量
- 自定义函数是call函数的实参,并在call中被执行
修改记录
参考资料
唐老师 — 狄泰软件学院 — 十二月提升计划
阅读全文
0 0
- 函数定义及调用
- 函数定义及调用
- 9-函数定义及调用
- C++函数指针定义及调用
- 复制构造函数的定义及调用
- C语言 函数定义及调用
- 关于JavaScript的函数定义及调用
- js内部函数的定义及调用
- Linux shell脚本中,如何定义函数及调用函数
- JavaScript 函数(一)- 函数的定义及调用
- 系统调用函数说明、参数值及定义
- 二维数组作为参数的函数定义及调用方法
- webservice定义及调用
- JS中以函数作为参数的函数的定义及调用
- JAVA 方法定义及调用
- 函数的定义和调用
- 原子函数调用时未被定义。。
- 批处理定义和调用函数
- CentOS7安装Apache与PHP与新的防火墙配置
- es迁移分片,重置主节点。
- 多线程情况下双重检查锁定问题的分析与优化
- J2SE基础
- github 出现 Permission denied (publickey)的解决
- 函数定义及调用
- 基于安装包方式部署mesos集群
- 个人总结1
- 李宏毅机器学习课程1~~~Introduction &Regression
- WordPress统计当前页面数据库查询次数及消耗时间的方法
- TinyHttpSever
- DAY43 IO模型
- ajax中弹出提示框
- AJAX扩展控件TabContainer(选项卡控件)的使用方法