то, что я пытаюсь сделать, это посмотреть, является ли год биссекстильным или нет, но когда я использую логическую функцию, это дает мне это странное сообщение.
вот мой код:
#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 bissextilen»,n1); }else{ printf(«the year %d is not bissextilen»,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
Источник: