![](/img/trans.png)
[英]Why does the compiler say that the variable “z” is redeclared as a different variable type?
[英]conflicting declarations for variable, type redeclared
我有這些錯誤和警告......我對編程很陌生,我不知道這意味着什么。 你們能看看這個並告訴我我做錯了什么嗎?
提前致謝
錯誤和警告:
Looplicht v2.0.c:226: warning: (361) function declared implicit int Looplicht v2.0.c:237: error: (984) type redeclared Looplicht v2.0.c:237: error: (1098) conflicting declarations for variable "integer_reverse" (Looplicht v2.0.c:237)
有錯誤的代碼(我在描述中放置了錯誤的行號):
void mode_single_right() {
output_integer = 0x0001; //start right
for (unsigned char i = 0; i < number_of_outputs; i++) {
if (jump) {
jump = 0;
output_integer = integer_reverse(output_integer); //line 226
switch_outputs(output_integer);
output_integer = (output_integer << 1);
} else {
i--;
}
}
}
unsigned int integer_reverse (unsigned int input_br) { //line 237
unsigned int output_br = 0;
bit bit_in_reverse = 0;
for (unsigned char ibr = 0; ibr < 16; ++ibr) {
bit_in_reverse = input_br & 0x01;
output_br |= bit_in_reverse;
input_br >>= 1;
output_br <<= 1;
}
return output_br;
}
您應該在調用之前聲明一個函數。 在第 226 行之前的某個點(最好在任何函數之外),包括一個原型:
unsigned int integer_reverse( unsigned int input_br );
如果調用尚未聲明的函數,在 C89 中,編譯器假定聲明為:
int integer_reverse();
然后它遇到你的函數頭(它是原型格式,所以它算作一個原型)並且編譯器檢測到這個原型與你的原始隱式聲明不兼容。
要么添加一個前向聲明,如
unsigned int integer_reverse (unsigned int input_br);
或者
在調用[使用]之前定義函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.