2015-03-20 2 views
0

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

вот мой код:

#include<stdio.h> 
#include<stdbool.h> 

main(){ 
    int n1; 
    printf("what is the year?\n"); 
    scanf("%d",&n1); 

    if(itIS(n1)){ 
     printf("the year %d is bissextile\n",n1); 
    }else{ 
     printf("the year %d is not bissextile\n",n1); 
    } 
} 

bool itIS(int n1){ 
    bool is = false; 
    if((n1/400)== 0){ 
     is = true; 
    } 
    return is; 
} 

и это вещь, которая мне кажется:

exe1.c:144:6: error: conflicting types for ‘itIS’ bool itIS(int n1){ 
^
    exe1.c:134:6: note: previous implicit declaration of ‘itIS’ was here if(itIS(n1)==true){ 
^

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

Редактировать: Так что я уже знаю, в чем проблема благодаря @Bill Lynch. Проблема в том, что мне нужно написать логическую функцию перед основной функцией, поэтому компилятор видит функцию, в основном это она.

+0

главная функция записывается как 'Int основной (пустоте)' или «Int основных (INT ARGC, символ ** ARGV). включите все предупреждения при компиляции, тогда ваш компилятор расскажет вам об этой проблеме (и о недостающем возвращаемом значении; в конце основного() – user3629249

+0

код отсутствует, перед main() прототипом функции: 'bool itIS (int); ' – user3629249

+0

@ user3629249, даже при добавлении' int main (void) 'он дает такое же предупреждение: S – bluewolfxD

ответ

2

Вы не объявляли функцию перед ее использованием. Добавьте это до main:

bool itIS(int n1); 

Кроме того, это int main(void), не main()

+0

он работает так же хорошо, как это, по умолчанию уже делает это, но неужели плохо писать так?! – bluewolfxD

+0

@bluewolfxD Если вы имеете в виду 'int main', да, вы должны написать его с типом возврата' int'. –

Смежные вопросы