错误:可能无法初始化可变大小的对象

时间:2014-07-05 05:01:23

标签: c

我的代码如下:

const size_t NUM_P = 100;
int main (viod)
{
   char *pS[NUM_P] = { NULL};            /* Array of string pointer */
   /* Other code */
}

我的编译器是CODEBLOCK,当NUM_P更改为数字时,错误将被清除,例如“12或35 ..”,我不知道错误的根本原因,或者是我的编译器问题。

3 个答案:

答案 0 :(得分:2)

问题的根源是NUM_P是变量,即使它是const变量。

将其声明替换为#define NUM_P 100,您的代码将再次编译。

答案 1 :(得分:1)

在C中,您不能为VLA提供初始化程序。

我建议对数组维使用编译时常量;那么它不是VLA:

#define NUM_P 100

int main(void)
{  
    char *pS[NUM_P] = { 0 };
}

由于历史原因,const变量不被视为C中的常量表达式。

答案 2 :(得分:0)

这在C ++中有效但在C中无效。您可以使用预处理器符号在C中执行此操作。

#define NUM_P 100
int main (viod)
{
   char *pS[NUM_P] = { NULL};
}