我的代码如下:
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 ..”,我不知道错误的根本原因,或者是我的编译器问题。
答案 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};
}