簡體   English   中英

變量聲明沖突,類型重新聲明

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM