вызов неопределенной функции в функции main () - PullRequest
1 голос
/ 11 августа 2010

всякий раз, когда я использую функцию, которая вызывается в основной функции, она выдает эту ошибку: вызов неопределенной функции в функции main () Я использую Turbo C ++ версии 4.5 и Windows Vista Ultimate Service Pack 2 Можете ли вы сказать, какой заголовочный файл или что-то еще будет использоваться. Я новичок в языке C.

Пример, который выдает эту ошибку:

#include<stdio.h> 

main( ) 
{ 
  int i ; 
  int marks[ ] = { 1, 2, 3, 4, 5, 6, 7 } ; 

  for ( i = 0 ; i <= 6 ; i++ ) display ( marks[i] ) ; 
} 

display ( int m ) 
{ 
  printf ( "%d ", m ) ; 
}

Ответы [ 5 ]

4 голосов
/ 11 августа 2010

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

#include <stdio.h>

void doit() { 
    // call function declared in <stdio.h>
    printf("Function called from main");
}

int main() {
    // call function defined above.
    doit();
    return 0;
}
2 голосов
/ 12 августа 2010

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

надеюсь, это поможет

#include<stdio.h> 

// this is the prototype
void display ( int m );

void main( ) 
{ 
  int i ; 
  int marks[ ] = { 1, 2, 3, 4, 5, 6, 7 } ; 

  for ( i = 0 ; i <= 6 ; i++ ) display ( marks[i] ) ; 
} 

void display ( int m ) 
{ 
  printf ( "%d ", m ) ; 
}
1 голос
/ 28 августа 2014

Просто добавьте приведенный ниже код над основной ()

     void display(int);
     main() {
     // code
     }
1 голос
/ 11 августа 2010

Разместите свой код, чтобы мы могли вам помочь.

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

Вот пример:

#include<stdio.h>

void someFunc()
{
 //define this function
 //notice it is before the main function
}

int main(void)
{
 someFunc();
 return 0;
}

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

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

** Ваша версия отредактирована **

Измените свой код на это:

#include<stdio.h> 

void display(int m)
{
  printf ( "%d ", m ) ; 
}

int main(void) 
{ 
  int i ; 
  int marks[ ] = { 1, 2, 3, 4, 5, 6, 7 } ; 

  for ( i = 0 ; i <= 6 ; i++ ) display ( marks[i] ) ; 
  return 0;
} 
0 голосов
/ 11 августа 2010

Вам, вероятно, нужно объявить прототип этой функции перед определением main ().

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