C предупреждение конфликтующих типов

мой код

void doc(){
          //mycode                
            return;
           }

мое предупреждение

conflicting types for 'doc'

может кто-либо решать его.

5
задан ambika 12 March 2010 в 07:59
поделиться

7 ответов

вы объявили его с каким-то другим типом / сигнатурой и определили с каким-то другим типом / сигнатурой ..

например,

int doc();
void doc()
{ 
}

выдаст вам это предупреждение .

4
ответ дан 18 December 2019 в 05:13
поделиться

Это явно не полный код.

Однако эта ошибка означает, что существует другое объявление для doc (возможно, глобальная переменная? Что-то в файле заголовка?), Которая не является функцией void , которая не принимает параметры.

3
ответ дан 18 December 2019 в 05:13
поделиться

"doc", вероятно, уже объявлен с другим типом ... вам следует попытаться найти предыдущее объявление!

2
ответ дан 18 December 2019 в 05:13
поделиться

Вы либо объявили doc ранее, либо сделали вызов необъявленного doc , что заставило компилятор вывести вероятное объявление параметра для doc из этого вызова . Теперь определение doc , которое вы процитировали, отличается от этого предыдущего объявления (явного или выведенного компилятором), что считается «конфликтом».

2
ответ дан 18 December 2019 в 05:13
поделиться

В C, если у вас нет прототипа для функции, когда вы вызываете ее, предполагается, что она возвращает int и принимает неопределенное количество параметров. Затем, когда вы позже определяете свою функцию как возвращающую void и не принимающую никаких параметров, компилятор воспринимает это как конфликт.

В зависимости от сложности вашего кода, вы можете сделать что-то простое, например, перенести определение функции перед ее использованием, или добавить объявление функции в заголовочный файл и включить его.

В любом случае, чистый эффект должен заключаться в том, чтобы сделать прототип функции доступным до ее использования.

Если вы добавите

void doc(void);

перед использованием функции, у вас будет прототип, видимый в области видимости, и ваше предупреждение исчезнет.

Я думаю, что это наиболее вероятная причина вашего предупреждения. Возможно, в вашем коде есть явное несовместимое объявление doc, но мы не можем сказать, потому что вы не опубликовали полный код.

27
ответ дан 18 December 2019 в 05:13
поделиться

Убедитесь, что вы не использовали документ где-либо в вашем коде!, Я думаю, что это только доставляет вам неприятности!

2
ответ дан 18 December 2019 в 05:13
поделиться

попробуйте написать вашу функцию doc перед вашей главной функцией в вашем программном файле.

14
ответ дан 18 December 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: