編譯器怎么處理定義但未使用的函數?
程序生成需要兩個步驟:編譯和鏈接。函數聲明未定義可以通過編譯,但是在鏈接時會失敗。舉個例子:張三和李四計劃周末去爬山,那么爬山這個過程就是程序執行。張三說他開車,李四說他買票,到底張三有沒有車和李四有沒有錢買票先不管,這個爬山的可行性是存在的,所以編譯通過。然后張三車壞了或者李四錢包丟了導致任何一個編譯的預先假定可以完成的條件被破壞,那么鏈接失敗這倆人就不能爬山了。如果張三既可以自己開車也可以去叫滴滴,那么爬山照樣可以完成,這就是同時定義了兩個函數但是只調用了一個。總的來說,函數聲明可以編譯通過,但是在鏈接時要找到函數的完整代碼定義才能生成目標程序。因此,函數聲明未定義能生成完整的可執行程序,但是不會生成obj,函數聲明定義但未使用也能生成可執行程序,但是會生成函數代碼的obj
上一篇wrap是什么意思
下一篇arm三大分支是什么