第9課 函式定義及呼叫

2021-09-26 14:56:38 字數 3050 閱讀 8256

(1)make 直譯器提供了一系列的函式供 makefile 呼叫(預定義函式)

(2)在 makefile 中支援自定義函式實現,並呼叫執行(自定義函式)

(3)通過define關鍵字實現自定義函式

2.1 自定義函式的語法

函式定義:

其中,$(0)代表被呼叫的函式名$(1) , $(2) , $(3)...代表呼叫函式時後面的傳參

函式呼叫:

2.2 深入理解自定義函式

(1)自定義函式本質是乙個多行變數,無法直接呼叫,需要使用call關鍵字,$(call func , param1, param2, ...)  首先將引數傳遞到多行變數裡的命令中,然後將命令原地展開

(2)自定義函式是一種過程呼叫,沒有任何的返回值。函式和過程是兩種東西,c 語言中進行了統一,加 return 是函式,不加 return 是過程。

(3)自定義函式用於定義命令集合,並應用於規則中

實驗1:自定義函式的使用】

1

#演示自定義函式的使用

23 .phony :test45

define

func1

6 @echo "my name is $(0)"

7endef89

define

func2

10 @echo "my name is $(0)"

11 @echo "param 1 => $(1)"

12 @echo "param 2 => $(2)"

13endef

1415 test :

16$(call func1)

17 $(call func2, swj,cool)

1819

#輸出結果

20my name is func1

21my name is func2

22 param 1 =>swj

23 param 2 => cool

實驗2:深入理解自定義函式】

1 .phony :test23

define

func1

4 @echo "my name is $(0)"

5endef

67 test :

8$(call func1)

9$(func1)

1011

#輸出結果:注意兩者的區別,call會傳參後原地展開,多行變數不會傳參直接原地展開

12my name is func1

13 my name is

3.1 預定義函式的概念

(1)make 的函式提供了處理檔名、變數和命令的函式

(2)可以在需要的地方呼叫函式來處理指定的引數

(3)函式在呼叫的地方被替換為處理結果

3.2 預定義函式的呼叫

自定義函式和預定義函式差別

(1)makefile 中不支援真正意義上的自定義函式,自定義函式只是call函式的實參,並在call中執行

(2)自定義函式的本質是多行變數

(3)預定義的call函式在呼叫時會將引數傳遞給多行變數(call的物件必須為多行變數,否則不起作用,不會傳遞引數)

程式設計實驗

1 .phony :test23

define

func1

4 @echo "my name is $(0)"

5endef67

define

func2

8 @echo "my name is $(0)"

9endef

1011 var1 :=$(call func1)

12 var2 :=$(call func2)

13 var3 := $(abspath ./)

1415 test :

16 @echo "var1 => $(var1)"

17 @echo "var2 => $(var2)"

18 @echo "var3 => $(var3)"

1920

#輸出結果

21 var1 => @echo

my name is func1

22 var2 => @echo

my name is func2

23 var3 => /home/swj/12-plan/makefile/lesson-9

注:本文整理於《狄泰12月提公升計畫》課程內容狄泰qq群:199546072

第9課 函式過載分析(下)

本文內容取自於對狄泰學院 唐佐林老師 c 深度解析 課程的學習總結 函式過載遇上函式指標 程式設計實驗 函式過載vs函式指標 include include intfunc int x intfunc int a,int b intfunc const char s typedef int pfun...

7 函式 呼叫及定義函式

資料型別轉換 python內建的常用函式還包括資料型別轉換函式,比如int 函式可以把其他資料型別轉換為整數 int 123 123 int 12.34 12 float 12.34 12.34 str 1.23 1.23 str 100 100 bool 1 true bool false函式名其...

09 函式定義及呼叫

makefile 中支援函式的概念 自定義函式示例 define func1 echo my name is 0 endef define func2 echo my name is 0 echo param one is 1 echo param one is 2 endef test call ...