• Android NDK的C++11标准支持


    C++11于Android NDK它已被支持,本文介绍了如何NDK添加C++11支持标准。

    在开源项目Cocos2d-x于,他已经加入C++11支持标准。


    1.改动Application.mk文件,加入NDK_TOOLCHAIN_VERSION

    NDK_TOOLCHAIN_VERSION=4.8

    2.加入APP_CPPFLAGS,在命令行编辑时支持C++11

    APP_CPPFLAGS := -frtti -std=c++11 

    然后编写測试函数。在JNI中调用此函数就可以。

    #include <android/log.h>
    
    #include <vector>
    #include <initializer_list>
    using namespace::std;
    
    #define  LOG_TAG    "cachetest"
    #define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
    
    template <typename T>
    class MyArray
    {
    private:
        vector<T> m_Array;
     
    public:
        MyArray() { }
     
        MyArray(const initializer_list<T>& il)
        {
            // Manually populate the elements of the array from initializer_list x
            for (auto x: il){ // use range-based for statement to iterate over the elements of the initializer list
                m_Array.push_back(x); // push them into the array manually
    		}
    	}
    	
    	void showContent()
    	{
    		//old way
    		LOGI("in old way");
    		for (std::vector<int>::iterator itr = m_Array.begin(); itr != m_Array.end(); ++itr){
    			LOGI("%d",(*itr));
    		}
    		
    		LOGI("in c++11 new way");
    		for (auto x: m_Array){ //x is readonly
    			LOGI("%d",x);
    		}
    	}
    };
    
    
    void test_cpp_new_version_11()
    {
    	auto x = 1;//int x = 1;
    	int *p = nullptr;//int *p = NULL;
    	MyArray<int> foo = { 3, 4, 6, 9 };
    	foo.showContent();
    }

    详细视频教程,能够參考海同网校视频课程<安卓NDK>开发。

    http://www.iotekclass.com/goods/courseDetail?

    goodId=83



    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    [NOI2016] 网格
    [十二省联考2019]春节十二响
    wordcloud的方法参数归纳汇总
    选择困难症
    连通能力
    [Tjoi2017]城市
    bzoj3732 Network
    bzoj3252 攻略
    Noip2018旅行
    [HEOI2015]兔子与樱花
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4811616.html
Copyright © 2020-2023  润新知