1. 程式人生 > >在IAR上用變數來定義數陣列長度編譯出錯解決辦法

在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即可。