Re: legality of forward declaration
- From: "Vladimir Oka" <novine@xxxxxxxxxxxxxxx>
- Date: 31 May 2006 06:18:51 -0700
Martin Eisenberg wrote:
Hi Antoine, just redirecting you...
Antoine Trux wrote:
Hi,
Is the following code legal:
------> code starts here <------
#include <stddef.h>
struct ForwardDeclared;
void foo(struct ForwardDeclared[]);
/* Dummy function, so this module contains some code. */
void dummy(void)
{
foo(NULL);
}
------> code ends here <------
?
I can see no reason why this code would not be legal, and indeed
gcc (version 3.4.5) and Microsoft C compiler (.NET) compile it
without a glitch.
Code Warrior (version 3.2.5), though, produces the following
error message:
------> CW problem starts here <------
C:\temp>mwccsym2.exe -g -O0 -inline
off -wchar_t off -align 4 -warnings on -w
nohidevirtual,nounusedexpr -msgstyle
gcc -enum int -str pool -exc ms -trigraphs on -stdinc -d _DEBUG
-d _UNICODE -d "
__SYMBIAN32__" -d "__SERIES60_30__" -d "__SERIES60_3X__" -d
"__CW32__" -d "__WIN
S__" -d "__WINSCW__" -d "WIN32" -d "_WINDOWS" -d
"__SUPPORT_CPP_EXCEPTIONS__" -c
wd source -i- -o forwardDeclaration.o -c forwardDeclaration.c
forwardDeclaration.c:5: illegal use of incomplete
struct/union/class 'struct For
wardDeclared'
Errors caused tool to abort.
------> CW problem ends here <------
Changing this line:
void foo(struct ForwardDeclared[]);
to:
void foo(struct ForwardDeclared*);
however, corrects the "problem".
So, is this (as I believe) a bug in Code Warrior (incorrectly
complains about correct code), or a bug in gcc and MS compilers
(do not detect code that is in error)?
Well, if the code above is the *only* code in your compilation unit,
then I'm afraid the CodeWarrior is right. What you need is a proper
declaration of your `struct`. Perhaps you're missing an `#include`
containing the declaration? Arrays and pointers are not the same thing
in C (despite what some sources say).
PS
Posting full compilable example is, as always, the best policy when
asking this sort of question.
.
- Follow-Ups:
- Re: legality of forward declaration
- From: Flash Gordon
- Re: legality of forward declaration
- From: Kenneth Brody
- Re: legality of forward declaration
- Prev by Date: Re: Simplicity has a future
- Next by Date: Re: Simplicity has a future
- Previous by thread: Regarding free function
- Next by thread: Re: legality of forward declaration
- Index(es):
Relevant Pages
|