問題起因:
我在移植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即可。