Как отсортировать функции в C? ошибка «предыдущее неявное объявление функции здесь» - PullRequest
9 голосов
/ 08 декабря 2010

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

function2(){
  function1()
}
function1 (){
  function2()
}

main () {
 function1()
}

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

main.c:193: error: conflicting types for 'function2'
main.c:127: error: previous implicit declaration of 'function2' was here

Как мне избежать этого? Заранее спасибо за предложения и ответы.

Ответы [ 5 ]

17 голосов
/ 08 декабря 2010

Вам необходимо объявить (не определить) хотя бы одну функцию перед ее использованием.

function2();                 /* declaration */
function1() { function2(); } /* definition */
function2() { function1(); } /* definition */

int main(void) { function1(); return 0; }
7 голосов
/ 08 декабря 2010

Фовард объявляет ваши функции ...

function1();
function2();

function2(){
  function1()
}
function1 (){
  function2()
}

main () {
 function1()
}
5 голосов
/ 08 декабря 2010

Попробуйте:

function1();
function2();

function2(){
  function1()
}
function1 (){
  function2()
}

main () {
 function1()
}
0 голосов
/ 26 июня 2015

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

Декларация: - function1 (); function2 (); а затем введите свой собственный код.

0 голосов
/ 08 декабря 2010

Форвард объявляет ваши функции, но с использованием прототипов .Если у вас их так много, что вы не можете с этим справиться, сейчас самое время подумать о своем дизайне и создать файл .h со всеми своими прототипами.Используйте

int function1(void);
int function2(void);

, если вы это имели в виду.int function1() уже отличается от такового в C. Помогите компилятору так, чтобы он мог вам помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...