gpt4 book ai didi

c - 如何通过指针访问全局定义的 typedef 结构?

转载 作者:行者123 更新时间:2023-12-04 05:40:20 27 4
gpt4 key购买 nike

我想知道如何在它所在的文件之外使用 typedef 结构。我的意思是,我有这个:

在名为“rtc_i2c.c”的文件中,我有 ---------------------

#include "rtc_i2c.h"

struct time_date_str
{
char year;
char month;
char date;
char day;

char hour;
char minute;
char second;
};


int RTCGetTime(TimeDate *timdatstrptr)
{
timdatstrptr -> second = 0x12;

return 0;
}

然后在一个名为“rtc_i2c.h”的文件中我有 -------------------------------
#ifndef RTC_I2C_H 
#define RTC_I2C_H

typedef struct time_date_str TimeDate;

#endif

在“main.c”中我有 ----------------------------------------- --------
#include "rtc_i2c.h"

TimeBase *TimeDateData;

void main(void)
{
char DateTimeASCII[20];

RTCGetTime(TimeDateData);

DateTimeASCII[0] = ????????
}

然后,当我进入我的代码时,我进入 RTCGetTime 并在监视窗口中看到“timdatstrptr -> second = 12”分配正确执行。但问题出在外面。如果我将“TimeDateData --> second”放在带有 ?????????? 的空间中,编译器会生成错误。所以我不知道我应该如何通过指针访问我全局定义的数组的内容。

如果我理解,声明为“TimeBase *TimeDateData”的指针指向我的数组并使用“-->”访问,因为它是一个指针。我错了吗?这是如何运作的?

有人可以帮我吗?谢谢!!

最佳答案

编译器不知道 time_date_str 的详细信息.您有 2 个选择:

  • 移动 struct time_date_str声明到头文件
  • rtc_i2c.c 中创建一种“访问器”功能

  • 这一切都归结为一个问题:外部实体是否应该知道有关此结构的详细信息?

    还有其他问题,包括您将未初始化的指针传递给 RTCGetTime 的事实。 .

    关于c - 如何通过指针访问全局定义的 typedef 结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11344773/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com