[GCC-XML] stat and stat64 mystery
Bryan Ischo
bji-gccxml at ischo.com
Thu Jul 5 00:51:24 EDT 2007
Hey all. I'm trying to understand a failure I am getting with some code
that I am using in conjunction with gccxml.
The problem I am having is that gccxml, when parsing
/usr/include/sys/stat.h on a Linux system (I have tried this on a variety
of RedHat Linux distributions from RedHat 9 to Fedora Core 5), reports on
two structs called "stat" and "stat64", which are themselves defined in
the file /usr/include/bits/stat.h, included by /usr/include/sys/stat.h.
When I inspect the bits/stat.h file I do indeed see these structure
definitions:
struct stat
{
[fields omitted]
};
#ifdef __USE_LARGEFILE64
struct stat64
{
[fields omitted]
};
#endif
But the problem is, if I try to compile C++ code which references the
types "stat" or "stat64", I get an error. For example, when compiling
this file:
-----------------------------------
#include <sys/stat.h>
static stat a_stat;
static stat64 a_stat64;
-----------------------------------
GCC gives these errors:
bji$ g++ -c foo.cpp
foo.cpp:3: error: 'stat' does not name a type
foo.cpp:4: error: 'stat64' does not name a type
Of course, I can make the problem go away if I instead use:
-----------------------------------
#include <sys/stat.h>
static struct stat a_stat;
static struct stat64 a_stat64;
-----------------------------------
What I don't understand is, why gcc requires these to be referenced as
"struct stat" and "struct stat64". I thought that in C++, structs are
automatically typedef'd to a type of the same name? This file certainly
compiled fine using g++:
-----------------------------------
struct stat
{
int a;
};
struct stat64
{
int b;
};
static stat a_stat;
static stat64 a_stat64;
-----------------------------------
What I really don't understand is, how the code being included by
<sys/stat.h> can be defining structs stat and stat64 that do *not* have
implicit typedefs so that the types can be referenced as simply "stat" and
"stat64".
I realize this is not a gccxml problem per se, and I will take this to the
gcc list if that's what's best, but I thought that someone here might have
some idea of what's going on.
Thank you!
Bryan
------------------------------------------------------------------------
Bryan Ischo bryan at ischo.com 2001 Mazda 626 GLX
Hamilton, New Zealand http://www.ischo.com RedHat Fedora Core 5
------------------------------------------------------------------------
More information about the gccxml
mailing list