![](/img/trans.png)
[英]warning: incompatible implicit declaration of built-in function ‘printf’ [enabled by default]
[英]Why is the program giving me warning,incompatible declaration of built in function
这是一个菜单驱动的程序,允许用户:
(1)查看日历
(2) 查看特定日期落在一周中的哪一天
(3)退出程序。
但它没有运行请帮助:
#include <stdio.h>
#include<conio.h>
#include<math.h>
void load_menu();
void view_calender();
void view_date();``
int main (int argv, char** arv)
{
load_menu();
return ;
}
void load_menu()
{
int choice;
do
{
printf("Menu\n");
printff("1. View Calender\n");
printf("2. View on which day a particular dau falls\n");
printf("3. Exit Programme\n");
scanf("%d", &choice);
switch(choice)
{
case 1: view_calender();
break;
case 2: view_date();
break;
case 3: printf("Exiting Programme!\n");
exit(0);
break;
default: printf("Invalid Choice chosen\n");
break;
}
} while (choice != 3);
}
void view_calender()
{
int is_leap_year( int year ); /* True if leap year */
int leap_years( int year ); /* The number of leap year */
int today_of( int y, int m, int d); /* The number of days since the beginning of the year */
long days( int y, int m, int d); /* Total number of days */
void calendar(int y, int m); /* display calendar at m y */
int year,month;
printf("Enter the Month(mm): ");
scanf("%d", &month);
printf("Enter the Year(yyyy): ");
scanf("%d", &year);
calendar(year, month);
return 0;
int isLeapYear( int y ) /* True if leap year */
{
return(y % 400 == 0) || ((y % 4 == 0) && (y % 100 != 0));
}
int leapYears( int y ) /* The number of leap year */
{
return y/4 - y/100 + y/400;
}
int TodayOf( int y, int m, int d) /* The number of days since the beginning of the year */
{
static int DayOfMonth[] =
{ -1,0,31,59,90,120,151,181,212,243,273,304,334};
return DayOfMonth[m] + d + ((m>2 && is_leap_year(y))? 1 : 0);
}
long Days( int y, int m, int d) /* Total number of days */
{
int last_year;
last_year = y - 1;
return 365L * last_year + leapy_years(last_year) + TodayOf(y,m,d);
}
void view_calendar() /* display calendar at m y */
{
int month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
char* day[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday" "Friday", "Saturday"};
int d;
int moti;
int yel;
int i;
printf("Enter date in this format dd-mm-yyyy: ");
scanf("%d-%d-%d", &d, &moti, &yel);
// correction for leap year
for (i = 1900; i < yel; i++)
if (i % 4 == 0 && (i % 100 != 0 || i % 400 == 0))
d += 366;
else
d += 365;
for (i = 0; i < moti - 1; i++)
d += month[i];
printf("This is a %s.\n", day[d % 7]);
return 0;
}
}
如果用户选择选项 (2),程序必须显示用户输入的日期所在的日期。
例如,如果用户想知道 2021 年 10 月 24 日是哪一天,则必须提示他们输入年(即 2021)、月份(即 10 表示 10 月)和日期(即 24)。
输出必须是星期几,例如“星期日”。
程序在执行选项 (1) 或 (2) 后必须再次显示菜单。
您显示的源代码收到有关exit
定义不兼容的警告,因为:
exit
是一个保留标识符; 它应该只用于名为exit
的标准库例程。exit
声明的<stdlib.h>
。exit
。 当在没有声明的情况下使用例程时,编译器会提供默认声明。int
的函数,但正确的exit
声明是不返回任何内容 ( void
) 的函数,因此编译器警告您该声明(默认提供)与内置标准函数不兼容。 要解决此问题,请在程序中插入#include <stdlib.h>
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.