我必须为静态变量分配一个我从函数中获取的值。 我尝试了以下操作,但我得到的初始化元素不是常量。
int countValue()
{
return 5;
}
void MatrixZero()
{
static int count=countValue();
count++;
printf("count value %d \n",count);
}
int main()
{
MatrixZero();
return 0;
}
答案 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();