Initializer元素不是常量

时间:2013-02-15 20:01:44

标签: c

我必须为静态变量分配一个我从函数中获取的值。 我尝试了以下操作,但我得到的初始化元素不是常量。

int countValue()
{
return 5;
}

void MatrixZero()
{

 static int count=countValue();
 count++;
 printf("count value %d \n",count);

}


int main()
{
    MatrixZero();
    return 0;   

}

3 个答案:

答案 0 :(得分:12)

因为......嗯......静态变量的初始值不是常数。它必须是一个恒定的表达。试试这个:

static int count = SOME_VALUE_OUT_OF_RANGE;
if (count == SOME_VALUE_OUT_OF_RANGE) {
    count = countValue();
}

检查它是否已经初始化。

答案 1 :(得分:7)

使用static存储说明符声明的变量必须使用常量表达式进行初始化。

static int count=countValue();

函数调用不是常量表达式。

答案 2 :(得分:-1)

// wenn countValue ein Objekt zurückgibt

static int* count=0;  if(count==0)count=countValue();