by Marco Manfredini <ok_nospam_ok@[EMAIL PROTECTED]
>
Apr 18, 2008 at 05:15 PM
Oncaphillis wrote:
[does not work:]
> typedef int bar;
>
> struct foo {
> bar bar;
> };
> 1. Is this behavior part of the standard or a defect
I think this is standard behavior. There is a rule for class-scope
declarations in 3.3.6 which basically says, that a declaration is only
valid, if it yields the same declaration after seeing all of the class.
This prohibits redefining a symbol after using it.
>
> 2. Is there a more elegant (may be even ****table) way
> to compile these C-headers without having to change
> them.
Not really. It might be a bit more elegant not to duplicate everything
in the headers, but just to wrap all occurrences of a typename in a
macro:
#ifdef __cplusplus__
#define TYPESYM(X) X##_t
#else
#define TYPESYM(X)
#endif
typedef int TYPESYM(bar);
struct TYPESYM(foo) {
TYPESYM(bar) bar;
};
--
[ See http://www.gotw.ca/resources/clcm.htm
for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]