找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 384|回复: 4
收起左侧

报错代码main.c(43): error C200: left side of '.' requires struct/union

[复制链接]
ID:1110661 发表于 2024-2-4 15:08 | 显示全部楼层 |阅读模式
在论坛里看到了一样的问题但是我声明了结构体为啥还是报错
提前谢谢大佬解答
代码主函数

void main ()
{
        struct ntime
{
        int year;
        int month;
        int day;
        int clock;
        int minute;
        int second;
};//创建时间结构体变量

       
//                struct ntime n_time;
//       
        while(1)
        {
               
                               
               

        time (2024,2,4,14,2,5);
//            n_time=o_time;
                LCD_Init();
                LCD_ShowNum(1,1,o_time.year,4);
                LCD_ShowString(1,5,".");
                LCD_ShowNum(1,6,o_time.month,2);
                LCD_ShowString(1,8,".");
                LCD_ShowNum(1,9,o_time.day,2);
                LCD_ShowString(1,11,"(^▽^ )");
                LCD_ShowNum(2,1,o_time.clock,2);
                LCD_ShowString(2,3,":");
                LCD_ShowNum(2,4,o_time.minute,2);
                LCD_ShowString(2,6,":");
                LCD_ShowNum(2,7,o_time.second,2);
       
               
               
               
        }





}



时间函数
#include <REGX52.H>
#include "Nixie.h"
#include "Delay1ms.h"


struct ntime time (year,month,day,clock,minute,second)
{
        struct ntime
{
        int year;
        int month;
        int day;
        int clock;
        int minute;
        int second;
};//创建时间结构体变量

        int a []={1,3,5,7,8,10,12};
        int Maxday=0;
        int i=7;

        struct ntime o_time;

        o_time.year=0;
        o_time.month=0;
        o_time.day=0;
        o_time.clock=0;
        o_time.minute=0;
        o_time.second=0;

       
                second++;
                Delay1ms(100);
                if(second>59)//秒进一
                {
                        second=0;
                        minute++;
                        if(minute>59)//分进一
                        {
                                minute=0;
                                clock++;
                                if(clock>23)//时进一
                                {
                                        clock=0;
                                        day++;
                                        while(i--)//判断大小月
                                        {
                                                if(month==a[i])
                                                {
                                                        Maxday=31;
                                                }
                                                else if(month==2)
                                                {
                                                        if(year%4==0)
                                                        {
                                                                Maxday=29;
                                                        }
                                                        if(year%4!=0)
                                                        {
                                                                Maxday=28;
                                                        }
                                                }
                                                else
                                                {
                                                        Maxday=30;
                                               
                                                }
                                       
                                        }
                                        if(day>Maxday-1)
                                        {
                                                day=1;
                                                month++;
                                                if(month>12)
                                                {
                                                        month=1;
                                                        year++;
                                               
                                                }
                                       
                                        }
                                }
                        }
                }
       
       
       
        o_time.year=year;
        o_time.month=month;
        o_time.day=day;
        o_time.clock=clock;
        o_time.minute=minute;
        o_time.second=second;
       
       
        return o_time;
       
}

回复

使用道具 举报

ID:1064915 发表于 2024-2-4 16:27 | 显示全部楼层
关于其struct声明的位置,也就是这段代码要放到哪里。同样这也是具有作用域的。

这种声明如果放在任何函数的外面,那么则可选标记可以在本文件中,该声明的后面的所有函数都可以使用。

如果这种声明在某个函数的内部,则它的标记只能在内部使用,并且在其声明之后;
回复

使用道具 举报

ID:1064915 发表于 2024-2-4 16:28 | 显示全部楼层
关于其struct声明的位置,也就是这段代码要放到哪里。同样这也是具有作用域的。

这种声明如果放在任何函数的外面,那么则可选标记可以在本文件中,该声明的后面的所有函数都可以使用。

如果这种声明在某个函数的内部,则它的标记只能在内部使用,并且在其声明之后;
回复

使用道具 举报

ID:883242 发表于 2024-2-4 17:14 | 显示全部楼层
struct ntime time (year,month,day,clock,minute,second)
写到这一句的时候struct ntime还不存在。
回复

使用道具 举报

ID:1110661 发表于 2024-2-5 11:56 | 显示全部楼层
joyb 发表于 2024-2-4 16:27
关于其struct声明的位置,也就是这段代码要放到哪里。同样这也是具有作用域的。

这种声明如果放在任何函 ...

谢谢,明白了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表