爲何結構體中的數組不能用const int變量指定大小?

typedef struct
{           
    int semId;            
    int counter;
    char str[MAX_STRING]; 
}MY_BLOCK_T;

int main()
{
      MY_BLOCK_T mybt;    //編譯時這裏報錯 ??
    char str2[MAX_STRING];  //這裏沒有錯 !!
      return 0;
}

編譯器不一樣,編譯的結果也是不一樣的,標準C不支持變量聲明聲明數組大小,可是有些融合了C++的支持變量申明,可是C++也不推薦這麼寫,數組大小應該是一個常數,若是不肯定數組大小最好仍是用Vector之類的容器,把數組改爲 char str[8192],或者是在開頭設置成宏定義#define  MAX_STRING 8192之後只要修改這個值就能修改數組大小,這也是編寫代碼時常規的方法,方便大型代碼的調試數組

相關文章
相關標籤/搜索