[英]incompatible types for redefinition C error
我有一个函数,需要两个数组作为输入并修改第一个。 我收到一个错误error: incompatible types for redefinition of 'applyChange'
第一行中error: incompatible types for redefinition of 'applyChange'
:
void applyChange(int values[3][3][3], int changeCode[9]){
我检查了一下,并没有意外地尝试两次定义函数。 我还确保我正确地调用了它(即正确的输入并且不期望返回值)。
编辑:
void hillClimb(int values[3][3][3],int pastData[20]){
int bestVal = evaluateValues(values,pastData);
int bestCode[9] = {0,0,0,0,0,0,0,0,0};
int valueChangeCode[9] = {0,0,0,0,0,0,0,0,0};
int valuesCopy[3][3][3];
//copyValues(valuesCopy,values);
while (incrementBaseThree(valueChangeCode,9)){
copyValues(valuesCopy,values);
applyChange(valuesCopy,valueChangeCode);
int evaluation = evaluateValues(valuesCopy,pastData);
if (evaluation > bestVal) {
bestVal = evaluation;
copyChangeCode(bestCode,valueChangeCode);
}
}
applyChange(values,bestCode);
}
void applyChange(int values[3][3][3], int changeCode[9]){
for (int a = 0; a < 9; a++){
changeCode[a] --;
}
for (int i = 0; i < 3; i++){
for (int k = 0; k < 3; k++){
values[i][k][ (0+k) % 3 ] += changeCode[ (3*i) + 0];
values[i][k][ (1+k) % 3 ] += changeCode[ (3*i) + 1];
values[i][k][ (2+k) % 3 ] += changeCode[ (3*i) + 2];
}
}
for (int a = 0; a < 9; a++){//we need this so that we don't mess up changeCode in the upper stack frame
changeCode[a] ++;
}
}
copyValues和copyChangeCode只是复制相应数组中的值。
现在您已经发布了代码。
您需要在调用之前声明applyChange()
。
放
void applyChange(int values[3][3][3], int changeCode[9]);
在文件的顶部
您在第61和68行调用函数applyChange()
。但是在第72行定义了该函数。因此,编译器在第61或68行中不知道applyChange()
函数。
您现在有两个选择:
1.)将函数applyChange()
放在函数调用上方。
2.)添加一个函数原型。
您可能需要在头文件中包含applyChange
的原型。 我猜发生了什么事,就是编译器在函数定义之前进入了函数调用,并推断出与实际签名冲突的签名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.