то, что я пытаюсь сделать, это посмотреть, является ли год биссекстильным или нет, но когда я использую логическую функцию, это дает мне это странное сообщение.
вот мой код:
#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. Проблема в том, что мне нужно написать логическую функцию перед основной функцией, чтобы компилятор увидел функцию, вот и все.
основная функция записывается как «int main(void)» или «int main(int argc, char **argv). включить все предупреждения при компиляции, тогда ваш компилятор сообщил бы вам об этой проблеме (и об отсутствующем возвращаемом значении; инструкция в конце main() — person bluewolfxD schedule 20.03.2015
код отсутствует, перед main() прототип функции: ‘bool itIS(int);’ — person bluewolfxD schedule 20.03.2015
@user3629249 user3629249, даже при добавлении «int main (void)» выдается то же предупреждение: S — person bluewolfxD schedule 20.03.2015
Вы не объявили функцию перед ее использованием. Добавьте это перед
main
:Кроме того, это
int main(void)
, а неmain()
он работает просто отлично, по умолчанию уже так делает. а разве так плохо писать?! — person bluewolfxD; 20.03.2015
@bluewolfxD Если вы имеете в виду
int main
, да, вы должны написать его с типом возвратаint
. — person bluewolfxD; 20.03.2015