1
char a[MAX_NR_DIGITS] = {5, 2, 1, 3, 5, 0, 7, 3, 4, 4};
int sizeA = 10;
char n[MAX_NR_DIGITS] = {5, 2, 6};
int sizeN = 3;
它返回兩倍的錯誤:可變大小的對象可能未初始化。 我該如何解決這個問題?C數組錯誤:可變大小的對象可能未被初始化
char a[MAX_NR_DIGITS] = {5, 2, 1, 3, 5, 0, 7, 3, 4, 4};
int sizeA = 10;
char n[MAX_NR_DIGITS] = {5, 2, 6};
int sizeN = 3;
它返回兩倍的錯誤:可變大小的對象可能未初始化。 我該如何解決這個問題?C數組錯誤:可變大小的對象可能未被初始化
如果這些數組在本地作用域聲明,並且MAX_NR_DIGITS
不是編譯時常量,則C將嘗試創建可變長度數組(VLA)。這是一個在運行時確定其大小的數組。
避免這種情況的最簡單方法是,如果它是無意的,則確保MAX_NR_DIGITS
是編譯時常量,如#define MAX_NR_DIGITS 10
。
當數組是VLA時代碼不工作的原因是因爲初始化器列表僅在編譯期間使用。因此C語言有一個要求,即VLA不能被初始化。
對於VLA您可以輕鬆地解決這個問題通過指定數組中的運行時間,而不是一個值:
memcpy(n, &(char[3]){5, 2, 6}, 3);
什麼是'MAX_NR_DIGITS'?你從哪裏得到錯誤?你可以請嘗試一個[最小,完整和可驗證的例子](http://stackoverflow.com/help/mcve)並告訴我們?並且在構建時包含完整且完整且未經編輯的錯誤輸出? –
你使用什麼開發環境? –
我想'MAX_NR_DIGITS'不是一個常量。這只是一個_guess_因爲你不告訴我們什麼'MAX_NR_DIGITS'是 –