在IAR上用變量來定義數數組長度編譯出錯解決辦法

問題起因:

    我在移植littlevGL到IAR的過程中,編譯出了下面的問題:

     Error[Pe028]: expression must have a constant value

    出現問題的地方是一個數組的定義: lv_color_t buf[useful_data];

    而定義數組的長度useful_data是一個變量,上面出錯的原因是IAR要求定義數組的長度是一個常數。

    uint32_t useful_data = (lv_area_get_width(&mask_com) >> us_shift) * sizeof(lv_color_t);

   上面這句是作者寫的,我不能改變庫函數,這樣工作量就大了,能不能有一個簡單的辦法呢?

   經過不斷的翻閱資料,終於找到一個好的方法,這個跟C語言的編譯有關,解決方法是:

   在options->C/C++ Compiler的C dialect  選中 Allow VLA即可。

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章