1. 程式人生 > >關於Xcode6編譯變更 “Implicit declaration of function 'sysctl' is invalid in C99” 報錯問題

關於Xcode6編譯變更 “Implicit declaration of function 'sysctl' is invalid in C99” 報錯問題

  之前程式碼在Xcode5.1上面跑的好好的,但是自從升級到6.0之後,就經常出現編譯報錯問題。後來查閱的相關資料,好像是Xcode為了相容Swift語言,更換來編譯系統(名字忘記了)。於是就報了一個C語言的C99編譯錯誤,不說了,直接上程式碼。

一般出現該問題是因為通過C呼叫了unix/linux 底層介面,所以需要調整c語言的編譯選項,設定方法見下圖:(根據實際情況選擇相應的編譯選項)

(Xcode預設的是GNU99[-std=gnu99])


我更換了C語言的編譯之後,又緊接著來了這樣的一個報錯。



conflicting types for ‘方法名’ 的錯誤。這個方法走的是C語法,報錯的意思就是說要走這個方法之前必須要先宣告(我不明白為什麼XCODE5.1上面沒有這種坑爹的問題,這是api,怎麼宣告?),後來我點選COMMAND進入這個方法發現這個方法原來是蘋果原生API的底層方法



通過上面檢視這個API的路徑,最後我在這個檔案裡面匯入了

#import <OpenGLES/ES1/gl.h>

OK了,問題終於解決了。

相信最新的Xcode6編譯系統會讓很多三方api底層的C程式碼造成很多的問題,這裡先記錄下來,以免下次再出現忘記了解決流程。