我想知道如何在它所在的文件之外使用typedef結構。我的意思是,我有這個:如何通過指針訪問全局定義的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」的指針指向我的數組,並且使用「 - >」訪問,因爲它是一個指針。我錯了嗎?這個怎麼用?
任何人都可以幫助我嗎?謝謝!!
@cnincutalyes所有的外部實體應能獲得這種結構。我已經將結構移至.h文件,但仍然無法編譯。如果我把「DateTimeASCII [0] = TimeDateData - > second;」錯誤標記爲「未聲明的標識符」 – m4l490n 2012-07-05 13:24:01
@ user1502121嘗試使用一個普通變量'TimeBase TimeDateData',您可以像這樣傳遞:'RTCGetTime(&TimeDateData)'。 – cnicutar 2012-07-05 13:26:19
@cnincutalyes謝謝!那解決了它。我將「TimeBase * TimeDateData」更改爲「TimeBase TimeDateData」並且像「&TimeDateData」一樣傳遞並且它工作 – m4l490n 2012-07-05 13:37:03