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

мой код

void doc(){ //mycode return; } 

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

 conflicting types for 'doc' 

может ли кто-нибудь его решить.

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

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

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

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

 void doc(void); 

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

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

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

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

лайк

 int doc(); void doc() { } 

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

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

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

«doc», вероятно, уже объявлен с другим типом … вы должны попытаться найти предыдущую декларацию!

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

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

Объявление функции выше использования решило ее для меня.

Пример:

 void recordAudio(){ //declaration doStuff(); } void initialise(){ recordAudio(); // usage } 

как вы можете видеть выше, использование recordAudio() находится выше, где используется.