今天在自定義類中,遇到linker command failed with exit code 1 (use -v to see invocation)
這個問題在百度查了一下說是 第三方引入或者Other Linker Flags
鏈接命令失敗的退出代碼問題,可是我的自定義類昨天還沒事,今天就只是在里面添加了兩個C
函數(shù)就報這個錯了,點進去看發(fā)現(xiàn)下面也有自定義函數(shù)可是沒問題啊, 不過人家前邊多兩個修飾詞static inline
想了半天表示小渣渣沒見過這樣修飾所以只能去問百度大神.
結果:
- 這玩意叫:
內聯(lián)函數(shù)
- 定義:
有函數(shù)的結構厌蔽,但不具備函數(shù)的性質锌钮,類似于宏替換樟凄。代碼中使用inline定義楞捂,能否形成內聯(lián)函數(shù),還要看編譯器對內聯(lián)函數(shù)體內部的定義的具體處理趋厉。 - 產生動機:
由于函數(shù)之間的調用寨闹,會從一個內存地址調到另外一個內存地址,當函數(shù)調用完畢之后還會返回原來函數(shù)執(zhí)行的地址君账。函數(shù)調用會有一定的時間開銷繁堡,引入內聯(lián)函數(shù)就是為了解決這一問題。杈绸。解決函數(shù)調用效率的問題.
4.注意事項:
不能使用循環(huán)語句帖蔓;不能使用開關語句;不能使用遞歸調用瞳脓;定義在第一次調用之前;
補充 :
我們知道一般的函數(shù)調用都會通過call的方式來調用澈侠,這樣讓攻擊很容易對一個函數(shù)做手腳劫侧,如果是以inline的方式編譯的會,會把該函數(shù)的code拷貝到每次調用該函數(shù)的地方哨啃。而static會讓生成的二進制文件中沒有清晰的符號表烧栋,讓逆向的人很難弄清楚邏輯。
相關連接: http://blog.csdn.net/chsadin/article/details/47982923
相關連接: http://www.blogfshare.com/ioss-static-inline.html