年少的梦想 发表于 2020-5-3 20:51:59

关于c语言头文件的使用

你好,鱼油,我想问一下,关于c语言头文件的问题,具体是这样的,我心血来潮写了一个代码,但发现main函数里面的内容太多,于是就声明了一个函数,然后把main里的所有内容放到那个函数里去了,在通过main调用那个函数,但不知道为什么报错,。对了,我的头文件是放在另一个文件里面的,代码报错截图如下

chxchxkkk 发表于 2020-5-3 20:52:00

多文件的话,一般函数声明写在.h文件里,函数的实现写在.c文件里

zltzlt 发表于 2020-5-3 20:54:06

调用函数直接 函数名(),把第 13 行的 void 去掉

年少的梦想 发表于 2020-5-3 21:06:17

zltzlt 发表于 2020-5-3 20:54
调用函数直接 函数名(),把第 13 行的 void 去掉

咳咳,尴尬,这个void大意了,大佬问问,改了还是有报错,,,,,是我其他函数的原因吗

zltzlt 发表于 2020-5-3 21:11:15

年少的梦想 发表于 2020-5-3 21:06
咳咳,尴尬,这个void大意了,大佬问问,改了还是有报错,,,,,是我其他函数的原因吗

把你 timeHead.h 代码完整发上来

年少的梦想 发表于 2020-5-3 21:12:52

zltzlt 发表于 2020-5-3 21:11
把你 timeHead.h 代码完整发上来

void yearss()
{
                int leapDay = 0;
        int NowDay = 0;
        int mouthDay = 0;
        int x = 0;
        int count;
        int bools = 0;
        int year = 0;
        int mouth = 0;
        int day = 0;
        printf("please Enter year number: \n");
        scanf("%d",&year);
        getchar();
        printf("please Enter mouth number: \n");
        scanf("%d",&mouth);
        getchar();
        printf("please Enter day number: \n");
        scanf("%d",&day);
        getchar();
        bools = function(year);
        if(bools)
        {
                count = 366;
                x = 29;
                mouthDay = mouthtion(mouth,x,day);
                NowDay = count - mouthDay;
                printf("%d年是闰年哦!\n",year);
        }
        else
        {
                count = 365;
                x = 28;
                mouthDay = mouthtion(mouth,x,day);
                NowDay = count - mouthDay;
                printf("%d年不是闰年哦!\n",year);

        }
        if((mouth == 4)||(mouth ==6)||(mouth == 9)||(mouth == 11))
        {
                leapDay = 30;
                if(day > leapDay)
                error();
        }
        else if(mouth == 2)
        {
                leapDay = x;
                if(day > leapDay)
                {
                        error();
                }
        }
        else
        {
                leapDay = 31;
                if(day > leapDay)
                {
                        error();
                }
        }
        if(leapDay == day)
        {
                if(mouth == 12)
                printf("这是该年最后一个月的最后一天咯!\n");
                else
                printf("请珍惜该月最后一天\n");
        }
        printf("\n\n\n");
        printf("总结:\n");
        printf("    %d年已经过去%d天,\n该年还剩下%d天,且行且惜!\n",year,mouthDay,NowDay);


}
void color(short x)
{
        if(x>=0 && x<=15)
                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
}
void error(void)
{
        printf("您输入的天数与该月不匹配哦!");
        exit(0);
}

int mouthtion(int mouth,int x,int day)//mouth ->count day
{
        int Jan = 0;
        int Feb = 31;//1
        int Mar = 31 + x;//1+2
        int Apr = Mar + 31;//1 + 2 + 3
        int May = Apr + 30;//1 + 2 + 3 + 4
        int Jun = May + 31;
        int Jul = Jun + 30;
        int Aug = Jul + 31;
        int Sep = Aug + 31;
        int Oct = Sep + 30;
        int Nov = Oct + 31;
        int Dec = Nov + 30;
        switch(mouth)
        {
                case 1:
                        return Jan + day;
                        break;
                case 2:
                        return Feb + day;
                        break;
                case 3:
                        return Mar + day;
                        break;
                case 4:
                        return Apr + day;
                        break;
                case 5:
                        return May + day;
                        break;
                case 6:
                        return Jun + day;
                        break;
                case 7:
                        return Jul + day;
                        break;
                case 8:
                        return Aug + day;
                        break;
                case 9:
                        return Sep + day;
                        break;
                case 10:
                        return Oct + day;
                        break;
                case 11:
                        return Nov + day;
                        break;
                case 12:
                        return Dec + day;
                        break;
                default:
                        error();
        }
}

int function(int year)//leap year
{
        int x = 0;
        if(year % 4 == 0)
        {
                if(year % 100 != 0){
                return 1;}
                else if(year % 400 ==0){
                return 1;}
                else
                return 0;       
        }
        else
        return 0;
}

zltzlt 发表于 2020-5-3 21:21:51

年少的梦想 发表于 2020-5-3 21:12


把你 timess.c 的源码也发上来

年少的梦想 发表于 2020-5-3 21:46:46

zltzlt 发表于 2020-5-3 21:21
把你 timess.c 的源码也发上来

抱歉啊。刚刚有点事。久等了#include<stdio.h>
#include<stdlib.h>
#include <time.h>
#include <windows.h>
#include "timeHead.h"
void color(short x);
int function(int year);
int mouthtion(int mouth,int x,int day);
void error(void);
void yearss(void);
int main()
{
        yearss();
}

KevinHu 发表于 2020-5-4 06:50:25

把声明也写在头文件里

年少的梦想 发表于 2020-5-4 07:21:33

chxchxkkk 发表于 2020-5-3 20:52
多文件的话,一般函数声明写在.h文件里,函数的实现写在.c文件里

可以了。谢谢
页: [1]
查看完整版本: 关于c语言头文件的使用