項目引入了一些cocos2d-x 3.0的代碼,大量使用c++11的新特性。這些在gcc4.6是不完全支持的,但是gcc4.7絕大部分已經支持。
設置toolchain的方法是在Application.mk中設置:
NDK_TOOLCHAIN_VERSION = 4.7
為了確認是否設置成功,在ndk-build調用時增加參數V=1。即 ndk-build v=1 ..其他參數..
這裡在說一下關於新標准的經驗。
依托於c++11的新標准,使用c++變得”爽“了很多。最本質的就是幾個元素
1、auto關鍵字,這個可以使代碼變得簡潔很多,並且可以讓程序員不那麼關注類型(但是不是不關注類型)。
2、shared_ptr,雖然沒有c++11的新標准項目也大量使用智能指針,但是歸到標准庫總是一件令人愉悅的事情。(你不需要引入boost或者是自己寫一個智能指針庫了)
3、function and bind,這兩個東西的加入讓回調函數變得優雅起來。 我使用腳本語言最方便的地方就是弱類型,比如lua,你可以隨時隨地保存一個function作為參數或者變量保存起來,然後合適的時機調用。合理使用function和bind你會發現c++有著不遜於高級語言的表達能力。
4、lambda,這個跟3一樣,都是讓代碼變得整潔,讓流程變得清晰。使用匿名函數,可以免去很多不必要的函數定義。不熟悉的人可能感覺語法詭異,但是熟悉後就會喜歡上它。參考java python lua objective-c....
5、thread,原本我更喜歡自己造輪子,但是造的多了就煩了。 使用thread就可以完美的解決各個平台的線程問題。而不需要使用pthread或者是自己的封裝版本。老實說我現在還沒有學會wp8平台下的線程庫,但是借助於thread,我可以永遠不去學習它。作為程序員,有的東西學的越多越好,有的東西沒有太大必要學習,一味跟著微軟後面跑的程序員不是好的程序員。
我現在想到的我喜歡並且常用的新特性就這些,另有一些不推薦使用的(如果不知道的話就不要知道):
1、統一初始化列表。 原因無他vs2012不支持,如果想要代碼在wp8下編譯,那就不要碰它
2、成員變量像java或c#一樣,在聲明的同時賦初值。 原因同上vs2012不支持。
3、部分特殊語義,不做列舉,因為不喜歡。 有些語義是vs明確聲明不支持的,這些高級貨色除非證明是不可替代的,否則還是不要碰它。
4、變參模板,這個其實是很好的特性,跟1一樣,可以2012不支持。暫時用替代方案吧。不過話說,除非是寫signal或者是function這樣的基礎庫,似乎用到變參模板的情況也不多。