STM32 學習之不定長數組的定義

通常情況下,keil、IAR 在定義數組的時候,都是需要指定數組的長度,但是我們大多數情況下是不知道我們輸入的數據可能會有多長。
所以爲了儘可能的包含所有的情況,通常的做法就是在定義數組的時候,將數組的長度定義的非常長。結果就會導致多數情況下,大量的內存空間被浪費了。

其實在C99新增的標準中是有關於這個的定義的,而且Keil和IAR 也是支持的。

下面我們來看看具體的實現方法:
一、在Keil 中的設置方法
在Keil4.7編譯配置管理的c/c++選項卡中Misc control中填寫 --c99(或者 --gnu 此方法還未測試)
如圖
在這裏插入圖片描述
在linker選項卡中刪除Misc control中的數據
在這裏插入圖片描述

在keil5編譯配置管理的c/c++選項卡中選中 c99 Mode
在這裏插入圖片描述
在linker選項卡中刪除Misc control中的數據
如圖 在這裏插入圖片描述
這樣的話,編譯就能不報錯,通過了…

二、在IAR 中的設置方法
在options->C/C++ Compiler的C dialect 選中 Allow VLA即可。
如圖
在這裏插入圖片描述

ok! 經過以上的設置,就可以不考慮數組長度的問題了!哈哈哈~~

IAR 中的選中 Allow VLA, 以及在Keil 設置項Misc control 中填入 -gnu ,兩種方法並未實際測試過,如有哪位同仁用過或者測試了,還請在下方的評論區,留言測試的結果。
謝謝了!!

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