函数定义及调用(八)

  

,,,,,,,,在makefile中是支持函数的概念的,使解释器提供了一系列的函数供makefile调用. .下面是自定义函数的语法

函数定义及调用(八)

,,,,,,,,我们再来深入地看看自定义函数,下。来我们还是以代码为例来进行说明

.PHONY :测试      define  func1   ,,,@echo “My  name  is  $ (0)“;   endef      define  func2   ,,,@echo “My  name  is  $ (0)“;   ,,,@echo “Param  1,=祝辞,(1)“美元;   ,,,@echo “Param  2,=祝辞,(2)“美元;   endef      var :=, $ (call  func1)   new :=, $ (func1)      test :   ,,,@echo “new =祝辞,美元(新)”;   ,,,@echo “var =祝辞,美元(var)“;   ,,,(美元call  func1), # @echo  My  name  is  func1   ,,,$ (call  func2, D.T.Software,, delphi_tang)

,,,,,,,,我们来看看编译结果

函数定义及调用(八)

,,,,,,,我们看到新变量只打印了前面的,并么有打印func1,因为自定义函数其本质是过程调用,没有任何的返回值;而var前面加了电话,因此它会输出函数名func1。在直接进行调用func1时,打印便是定义的字符串,它的参数0是函数名,叫func2时,加了两个参数,因此参数1为D.T.软件,参数2为delphi_tang下。来我们来看看预定义函数的调,用格式如下

函数定义及调用(八)

,,,,,,,,那么自定义函数和预定义函数的调用形式为何完全不同呢?我们来分析下makefile中的预定义函数,。

,,,,,,,,下来我们还是以代码为例来进行说明

.PHONY :测试      define  func1   ,,,@echo “My  name  is  $ (0)“;   endef      define  func2   ,,,@echo “My  name  is  $ (0)“;   endef      var1 :=, $ (call  func1)   var2 :=, $ (call  func2)   var3 :=,美元(abspath /)。   var4 :=, $ (abspath  test.cpp)      test :   ,,,@echo “var1 =祝辞,美元(var1)“;   ,,,@echo “var2 =祝辞,美元(var2)“;   ,,,@echo “var3 =祝辞,美元(var3)“;   ,,,@echo “var4 =祝辞,美元(var4)“

,,,,,,,,程序中的abspath是输出当前目录的绝对路径,我们来看看结果

函数定义及调用(八)

,,,,,,,,我们看到var1和var2定义的分别是个自定义函数,因此输出函数名;而var3是输出当前目录的绝对路径,var4是输出当前目录下的测试。cpp路径。结果也正是这样的。通过对makefile中的函数定义及调用的学习,总结如下:


,,,,,,,,

函数定义及调用(八)