C 为什么程序给我警告,内置函数的声明不兼容

C 为什么程序给我警告,内置函数的声明不兼容,c,C,这是一个菜单驱动程序,允许用户: (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(); ret

这是一个菜单驱动程序,允许用户:

(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;
}
}
#包括
#包括
#包括
无效加载菜单();
无效视图_日历();
无效视图_日期()``
int main(int argv,字符**arv)
{
加载菜单();
回来
}
无效加载菜单()
{
智力选择;
做
{
printf(“菜单\n”);
printff(“1.查看日历\n”);
printf(“2.查看特定dau落在哪一天\n”);
printf(“3.退出计划”\n);
scanf(“%d”,选择(&C);
开关(选择)
{
案例1:视图_日历();
打破
案例2:查看日期();
打破
案例3:printf(“退出计划!\n”);
出口(0);
打破
默认值:printf(“选择的选项无效\n”);
打破
}
}while(选项!=3);
}
无效视图_日历()
{
int是闰年(int year);/*如果是闰年,则为True*/
整数闰年(整数年);/*闰年数*/
int today_of(inty,intm,intd);/*自年初以来的天数*/
长天数(整数y、整数m、整数d);/*总天数*/
无效日历(整数y,整数m);/*在整数y显示日历*/
int年,月;
printf(“输入月份(mm):”;
scanf(“%d”和“月”);
printf(“输入年份(yyyy):”;
scanf(“%d”和“年”);
日历(年、月);
返回0;
整数isLeapYear(整数y)/*如果是闰年,则为True*/
{
返回值(y%400==0)| |((y%4==0)和&(y%100!=0));
}
整数闰年(整数y)/*闰年数*/
{
返回y/4-y/100+y/400;
}
int TodayOf(int y,int m,int d)/*自年初以来的天数*/
{
静态int DayOfMonth[]=
{ -1,0,31,59,90,120,151,181,212,243,273,304,334};
月返回日[m]+d+((m>2&&is_闰年(y))?1:0);
}
长天数(整数y、整数m、整数d)/*总天数*/
{
去年的国际贸易;
上一年=y-1;
返回365L*上一年+飞跃年(上一年)+今天(y,m,d);
}
void view_calendar()/*在y轴显示日历*/
{
内月[]={31,28,31,30,31,30,31,31,30,31,31,31};
char*day[]={“星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”};
int d;
int moti;
int yel;
int i;
printf(“以这种格式输入日期dd-mm-yyyy:”);
scanf(“%d-%d-%d”、&d、&moti、&yel);
//闰年修正
对于(i=1900;i
如果用户选择选项(2),程序必须显示用户输入日期的日期

例如,如果用户想知道2021年10月24日是哪一天,则必须提示他们输入年份(即2021年)、月份(即10月10日)和日期(即24日)

输出必须是一周中的某一天,例如“星期日”


执行选项(1)或(2)后,程序必须再次显示菜单。

您显示的源代码会收到一条关于退出定义不兼容的警告,因为:

  • exit
    是一个保留标识符;它只能用于名为
    exit
    的标准库例程
  • 您的程序不包括将提供退出声明的
  • 您的程序使用
    exit
    ,但没有声明。如果在没有声明的情况下使用例程,编译器将提供默认声明
  • 默认声明用于返回
    int
    的函数,但
    exit
    的正确声明是不返回任何内容的函数(
    void
    ),因此编译器警告您声明(默认提供)与内置标准函数不兼容

要解决此问题,请在程序中插入
#include

确切的错误消息是什么?我的错误消息是:
警告:内置函数“exit”的不兼容隐式声明注意:包括“”或提供“exit”声明
此外,您还有从
void
返回值的函数-返回函数和不从非void函数返回值的函数。。。还有一个
printf
,我怀疑它是否存在……看来您正在
view\u calender()中(声明和)定义函数。C不允许嵌套函数定义。@pmg:C允许嵌套函数定义。C标准不定义嵌套函数定义,但允许扩展。更好的说法是,标准C不支持嵌套函数定义。那么我应该做什么呢?我已经插入了#include,这样就解决了退出问题。请有人重新编写我的代码,它仍然在给我errors@Lenny:需要重写你的代码的人叫“Lenny”,这是你的程序;您需要修复您创建的其他错误。一个接一个地追踪他们,从每个汇编中报告的第一个开始。有时,您可以一次修复多个;有时,第一个错误会触发其他错误。