Hi Vincent,

Declaring a member within a struct isn't equivalent to an expression, so 
the presence of just a semi-colon isn't valid ... it is supposed to be a 
declaration (consisting of a type and member name).

Individual warnings and errors can be turned off, if desired, by using 
the -erroff flag along with the message tag of interest. A warning/error 
tag name can be found by specifying the -errtags flag. Once you have the 
tag name, you can compile your source with the -erroff flag 
(-erroff=<message tag name>). In this case, if you specify -errtags, 
you'll find the message tag name is

    E_EMPTY_MBR_DECLARATION

Compiling with -erroff=E_EMPTY_MBR_DECLARATION will inhibit generation 
of the empty member declaration warning.

--Dave

Vincent Torri wrote:
>
> Hey,
>
> In a header file, we define a macro if pthread is available at configure
> time, like that:
>
> #ifdef HAVE_PTHREAD
> # define LK(x)  pthread_mutex_t x
> #else
> # defne LK(x)
> #endif
>
> When we use it, for example in a structure:
>
> struct foo
> {
>   int i;
>   LK(lock);
> };
>
> So, when pthread support is disabled, we have
>
> struct foo
> {
>   int i;
>   ;
> };
>
> and suncc reports the warning:
>
> warning: syntax error:  empty member declaration
>
> One solution would be to put the ; inside the define, and remove the ; in
> the structure. But then editors are completly lost when indenting the
> source code.
>
> it seems to me that empty declarations are allowed (a semicolon is a valid
> empty statement). Am I wrong ? And is there a compiler option to remove
> the warning ?
>
> Vincent Torri
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> tools-compilers mailing list
> tools-compilers at opensolaris.org
>   


Reply via email to