Я изучаю C и изучаю функции. Итак, я прочитал, что когда я реализую свою собственную функцию, я должен объявить ее перед main(). Если я пропущу объявление, компилятор получит сообщение об ошибке.
Как я изучал этот пример (находит, если число является простым числом)Объявить функцию void в C?
#include <stdio.h>
void prime(); //function prototype(declaration)
int main()
{
int num,i,flag;
num = input(); // No argument is passed to input()
for(i=2,flag=i; i<=num/2; ++i,flag=i)
{
flag = i;
if(num%i==0)
{
printf("%d is not prime\n",num);
++flag;
break;
}
}
if(flag==i)
printf("%d is prime\n",num);
return 0;
}
int input() /* Integer value is returned from input() to calling function */
{
int n;
printf("\nEnter positive enter to check: ");
scanf("%d",&n);
return n;
}
Я заметил, что функция штрих() объявлен, но в основном функция входа() вызывается, а также функция input() реализуется внизу. Хорошо, я подумал, что это ошибка, и я меняю имя от простого до ввода.
Однако если я удалю декларацию, и я ее не помещаю, программа скомпилируется без ошибок и работает гладко. (Я компилирую и запускаю его в Ubuntu)
Итак, мой вопрос: нужно ли объявлять функцию void без аргументов?
Функция без аргументов должна быть 'void f (void)', IIRC. 'void f()' может принимать * любые * аргументы (да, это потрясающий язык C). –
prime() никогда не называется, не так ли? поэтому нет прототипа, потому что он никогда не называется – Constantin
. Похоже, вы не называете 'prime' нигде? Если вы его не называете, нет необходимости объявлять его (до). –