尼莫点Nemo 2023-09-10 11:41 采纳率: 50%
浏览 33
已结题

C语言Clion函数报错

#C语言

请教大家,这样的应该怎么解决,刚刚开始学用Clion,这段代码明明在CB上运行是没有问题的。

报错为:
Call to undeclared function 'yearkind'; ISO C99 and later do not support implicit function declarations
Parameter 'year' was not declared, defaults to 'int'; ISO C99 and later do not support implicit int

以下为完整代码:

#include<stdio.h>


int main()
{
    int ret, year, month, flag;

    ret = scanf("%d %d", &year, &month);
    if (ret != 2)
    {
        printf("ERROR!");
        fflush(stdin);
    }
    else
    {
        flag = yearkind(year);

        if (flag == 1)           //闰年
        {
            switch(month)
            {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    printf("这个月有31天。");
                    break;
                case 2:
                    printf("这个月有29天。");
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    printf("这个月有30天。");
                    break;

            }
        }
        else
        {
            switch(month)
            {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    printf("这个月有31天。");
                    break;
                case 2:
                    printf("这个月有28天。");
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    printf("这个月有30天。");
                    break;
            }
        }
    }

    return 0;
}

int yearkind(year)
{
    return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? 1 : 0;
}


我还想问一嘴,似乎CB的编码跟Clion不一样,怎么解决?

  • 写回答

4条回答 默认 最新

  • 呈两面包夹芝士 2023-09-10 11:44
    关注

    你的代码在Clion中报错是因为你使用的编译器遵循了C99标准,而C99标准不支持隐式函数声明和隐式int。在你的代码中,函数yearkind并没有在调用前声明,同时year参数也没有明确声明类型,因此编译器给出了错误信息。

    解决这个问题的方法是在调用yearkind函数前进行函数声明,并明确声明year参数的类型。可以将代码修改为如下形式:

    #include<stdio.h>
    
    // 函数声明
    int yearkind(int year);
    
    int main()
    {
        int ret, year, month, flag;
     
        ret = scanf("%d %d", &year, &month);
        if (ret != 2)
        {
            printf("ERROR!");
            fflush(stdin);
        }
        else
        {
            flag = yearkind(year);
     
            if (flag == 1)           //闰年
            {
                switch(month)
                {
                    case 1:
                    case 3:
                    case 5:
                    case 7:
                    case 8:
                    case 10:
                    case 12:
                        printf("这个月有31天。");
                        break;
                    case 2:
                        printf("这个月有29天。");
                        break;
                    case 4:
                    case 6:
                    case 9:
                    case 11:
                        printf("这个月有30天。");
                        break;
                }
            }
            else
            {
                switch(month)
                {
                    case 1:
                    case 3:
                    case 5:
                    case 7:
                    case 8:
                    case 10:
                    case 12:
                        printf("这个月有31天。");
                        break;
                    case 2:
                        printf("这个月有28天。");
                        break;
                    case 4:
                    case 6:
                    case 9:
                    case 11:
                        printf("这个月有30天。");
                        break;
                }
            }
        }
     
        return 0;
    }
     
    // 函数定义,此处已将year参数的类型明确为int
    int yearkind(int year)
    {
        return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? 1 : 0;
    }
    

    这样修改后,代码应该可以在Clion中正常运行。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月18日
  • 已采纳回答 9月10日
  • 创建了问题 9月10日

悬赏问题

  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd