gcc 4.4.3 c89初始化分配一個數組的大小
我想知道爲什麼我不能在初始化指向char的指針數組時分配數組的大小。
我得到以下錯誤:
variable-sized object may not be initialized
該工程確定。但是,sizeof將返回4個字節,因爲char *的大小爲4個字節。這是不好的,因爲它不是我想要的實際大小。
void inc_array(const char * const src, size_t size)
{
/* Array of pointers */
char *dest[sizeof(src)] = {0};
}
但是,這是我想要做的就是傳遞實際大小並使用它來初始化數組的長度。
void inc_array(const char * const src, size_t size)
{
/* Array of pointers */
char *dest[size] = {0};
}
當sizeof返回一個size_t並且我傳遞一個size_t時,有什麼區別?
非常感謝您的任何建議,
是的,你是對的。我剛剛測試過。 – ant2009 2010-08-19 05:14:42
所以VLA完全可以接受它,只有當你嘗試並初始化它們。我已經標明這是正確的,因爲這是我得到這個錯誤的真正原因。謝謝。 – ant2009 2010-08-19 06:41:13
@robUK:它們在當前的C標準中是可以接受的,並且作爲舊C標準的gcc擴展。 – caf 2010-08-19 07:07:49