delorie.com/archives/browse.cgi | search |
From: | Nate Eldredge <neldredge AT hmc DOT edu> |
Newsgroups: | comp.os.msdos.djgpp |
Subject: | Re: Forward reference.... |
Date: | 08 Nov 1999 10:39:07 -0800 |
Organization: | InterWorld Communications |
Lines: | 40 |
Message-ID: | <83vh7c7rqs.fsf@mercury.st.hmc.edu> |
References: | <8062tr$b6m$1 AT news DOT seed DOT net DOT tw> |
NNTP-Posting-Host: | mercury.st.hmc.edu |
X-Trace: | nntp1.interworld.net 942086410 28986 134.173.45.219 (8 Nov 1999 18:40:10 GMT) |
X-Complaints-To: | usenet AT nntp1 DOT interworld DOT net |
NNTP-Posting-Date: | 8 Nov 1999 18:40:10 GMT |
X-Newsreader: | Gnus v5.7/Emacs 20.4 |
To: | djgpp AT delorie DOT com |
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
Reply-To: | djgpp AT delorie DOT com |
"cywu" <cywu AT iii DOT org DOT tw> writes: > Source code in xxx.h are as following: > > /* Forward reference of OsTimer. This is so it can be used in the > declaration > * of OsTimerNotify > */ > 93 typedef struct _OsTimer OsTimer; > typedef void (*OsTimerNotify)(OsTimer*); > typedef struct _OsTimer { > ListEntry node; > TimeT time; /* Time period of the timer in TimeT > units */ > OsTimerNotify func; /* Pointer to function called when timer > fires */ > TimeT startTime; > 100 } OsTimer; > but after compile, the error message is: > xxx.h:100: redefinition of 'OsTimer' > xxx.h:93: 'OsTimer' previously declare here Hmm... here's one way to do it. struct _OsTimer; /* This is the forward declaration */ typedef struct _OsTimer OsTimer; /* typedef it to the name we want */ typedef void (*OsTimerNotify)(OsTimer *); /* Now actually define struct _OsTimer; it's the one thing not yet defined. */ struct _OsTimer { ... OsTimerNotify func; ... }; -- Nate Eldredge neldredge AT hmc DOT edu
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |