所以在我的源文件我有folowin功能:如何在C函數中定義一個數組?
void update(state* old_state, state* measurement, uint32_t size)
{
state new_state[size];
//some function using measurement and old_state and returning the result in newstate
arm_fadd_32(measurement,old_state,newstate,size);
//其餘代碼 }
現在,編譯器會拋出一個錯誤,指出 錯誤#28:表達式必須具有恆定值。 我認爲這是由於這樣一個事實,即使在該方法內局部變量的大小沒有改變,編譯器在定義大小時也期待一個常量。 我曾嘗試以下:
int const a = size;
,然後試圖重新初始化它說的恆定值是不知道。 我在互聯網上做了一些研究,似乎沒有使用malloc沒有簡單的方法,我不想因爲我使用某些嵌入式應用程序的代碼。
有沒有辦法避免這個問題,而不真正使用malloc?在此先感謝你們!
你要麼知道編譯時的大小(可能在'#define'中),並使用該常數來分配數組,或者在編譯時不知道這個數字,你需要使用' malloc'。 – lvella