Android NDK對於wchar_t和wcs的支持就是一堆屎.別想輕易使用UTF16編碼.相比Win上的C++開發對於各類字符編碼支持美若天堂,之前竟然沒發現.c++
強制wchar_t編譯爲2字節,wcs系函數不正確,還要本身實現.編譯器難道就不能提示下不兼容或者什麼的?函數
對於各類wcs系的printf的缺失,也爲了各平臺兼容(IOS上也是一樣坑),全部字符串均改成char/std::string,所有UTF8編碼,而後對於各類硬編碼的中文字符,請保存源代碼時選擇(UTF-8 BOM)格式,再高效和兼容性上獲取最大平衡點.編碼
對於GCC等支持c++0x11的編譯器,能夠使用u8的前綴明確代表編譯時把字符直接量用UTF8的格式存放.或者把源代碼文件用UTF-8保存也能夠.但VC2013仍然不支持UTF8的直接量,必須轉碼.費時費效率.調試
NDK的Make或者說是GUN的Make的一個子集是對格式嚴格要求或者說是不靠譜,對於任何潛在的空格,\t,\r,\n彷佛都不能容忍.再編譯完一個so後調試正確,而後再mk文件中的LOCAL_SRC_FILES加了一個註釋,相似 \ #####這是一個註釋 \,編譯沒有報任何錯,運行使用這個so動態庫的時候crash,若是不是事先已經調試完確認代碼沒有錯誤,估計找到天荒地老都不會發現這個錯誤,去除這個註釋編譯/連接,程序完美運行.開發