Обсуждение: Sun Studio compiler warnings

Поиск
Список
Период
Сортировка

Sun Studio compiler warnings

От
Peter Eisentraut
Дата:
Sun Studio is producing these compiler warnings (among others):

"tsquery_op.c", line 193: warning: syntax error:  empty declaration 
"tsquery_op.c", line 194: warning: syntax error:  empty declaration 
"tsquery_op.c", line 195: warning: syntax error:  empty declaration 
"tsquery_op.c", line 196: warning: syntax error:  empty declaration 
"tsquery_op.c", line 197: warning: syntax error:  empty declaration 
"tsquery_op.c", line 198: warning: syntax error:  empty declaration

"tsvector_op.c", line 177: warning: syntax error:  empty declaration 
"tsvector_op.c", line 178: warning: syntax error:  empty declaration 
"tsvector_op.c", line 179: warning: syntax error:  empty declaration 
"tsvector_op.c", line 180: warning: syntax error:  empty declaration 
"tsvector_op.c", line 181: warning: syntax error:  empty declaration 
"tsvector_op.c", line 182: warning: syntax error:  empty declaration 
"tsvector_op.c", line 183: warning: syntax error:  empty declaration

This relates to the following sort of code:

#define CMPFUNC( NAME, CONDITION )              \
Datum                                           \
NAME(PG_FUNCTION_ARGS) {                        \    TSQuery  a = PG_GETARG_TSQUERY_COPY(0);     \    TSQuery  b =
PG_GETARG_TSQUERY_COPY(1);    \    int res = CompareTSQ(a,b);                  \
       \    PG_FREE_IF_COPY(a,0);                       \    PG_FREE_IF_COPY(b,1);                       \
                                 \    PG_RETURN_BOOL( CONDITION );                \
 
}

CMPFUNC(tsquery_lt, res < 0);
CMPFUNC(tsquery_le, res <= 0);
CMPFUNC(tsquery_eq, res == 0);
CMPFUNC(tsquery_ge, res >= 0);
CMPFUNC(tsquery_gt, res > 0);
CMPFUNC(tsquery_ne, res != 0);

The closing semicolon is strictly speaking not allowed here.  We could 
remove it, but that would probably upset pgindent?

I recall that we used to have a bunch of similar problems with the AIX 
compilers a long time ago.  Does anyone recall the solution, and do we 
still care?  (Note that it's only a warning in this case.)


Re: Sun Studio compiler warnings

От
Tom Lane
Дата:
Peter Eisentraut <peter_e@gmx.net> writes:
> CMPFUNC(tsquery_lt, res < 0);
> CMPFUNC(tsquery_le, res <= 0);
> CMPFUNC(tsquery_eq, res == 0);
> CMPFUNC(tsquery_ge, res >= 0);
> CMPFUNC(tsquery_gt, res > 0);
> CMPFUNC(tsquery_ne, res != 0);

> The closing semicolon is strictly speaking not allowed here.  We could 
> remove it, but that would probably upset pgindent?

If the warnings annoy you, do what PG_FUNCTION_INFO_V1 does.

#define PG_FUNCTION_INFO_V1(funcname) \
extern PGDLLIMPORT const Pg_finfo_record * CppConcat(pg_finfo_,funcname)(void); \
const Pg_finfo_record * \
CppConcat(pg_finfo_,funcname) (void) \
{ \static const Pg_finfo_record my_finfo = { 1 }; \return &my_finfo; \
} \
extern int no_such_variable

        regards, tom lane


Re: Sun Studio compiler warnings

От
"Robert Haas"
Дата:
> The closing semicolon is strictly speaking not allowed here.  We could
> remove it, but that would probably upset pgindent?
>
> I recall that we used to have a bunch of similar problems with the AIX
> compilers a long time ago.  Does anyone recall the solution, and do we still
> care?  (Note that it's only a warning in this case.)

How about the good old

do {
...
} while (0)

trick?

...Robert


Re: Sun Studio compiler warnings

От
Alvaro Herrera
Дата:
Robert Haas escribió:
> > The closing semicolon is strictly speaking not allowed here.  We could
> > remove it, but that would probably upset pgindent?
> >
> > I recall that we used to have a bunch of similar problems with the AIX
> > compilers a long time ago.  Does anyone recall the solution, and do we still
> > care?  (Note that it's only a warning in this case.)
> 
> How about the good old
> 
> do {
> ...
> } while (0)
> 
> trick?

That can't be used because the macro is defining a completely new
function.

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support


Re: Sun Studio compiler warnings

От
"Robert Haas"
Дата:
Ooooh.... yeah.  Time for some caffeine.

...Robert

On Thu, Oct 30, 2008 at 9:34 PM, Alvaro Herrera
<alvherre@commandprompt.com> wrote:
> Robert Haas escribió:
>> > The closing semicolon is strictly speaking not allowed here.  We could
>> > remove it, but that would probably upset pgindent?
>> >
>> > I recall that we used to have a bunch of similar problems with the AIX
>> > compilers a long time ago.  Does anyone recall the solution, and do we still
>> > care?  (Note that it's only a warning in this case.)
>>
>> How about the good old
>>
>> do {
>> ...
>> } while (0)
>>
>> trick?
>
> That can't be used because the macro is defining a completely new
> function.
>
> --
> Alvaro Herrera                                http://www.CommandPrompt.com/
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>