Обсуждение: Embedded SQL: Putting a guard around included stdio.h for convenience

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

Embedded SQL: Putting a guard around included stdio.h for convenience

От
Carsten Klein
Дата:
Hi all,

I have just tried to compile an application consisting of multiple 
modules, each of them encapsulation access to a single table of
the default database, using embedded sql.

Well, until now, I have had problems with stuff being declared twice 
(from stdio.h and successively included include files by stdio.h),
since postgres sources seemingly do not put a guard around the include 
statement.

what i mean is, please, do include the following:

#ifndef _STDIO_H
#include <stdio.h>
#endif /* _STDIO_H */

This seemingly is not being generated by the ecpg or included in the 
header files being included.

And while we are at it, although I personally think that Embedded SQL is 
quite obsolete by now (but we have to do this stuff in school, perhaps 
I'm wrong),
please check other parts of your source referencing (including) external 
include files, where there is no guard around the include statement. It 
makes things
tedious and nearly impossible to solve, when they are not there...


Thanks.

Carsten Klein




Re: Embedded SQL: Putting a guard around included stdio.h for convenience

От
Tom Lane
Дата:
Carsten Klein <carstenklein@yahoo.de> writes:
> what i mean is, please, do include the following:

> #ifndef _STDIO_H
> #include <stdio.h>
> #endif /* _STDIO_H */

What platform are you on, that is so brain-dead that stdio.h doesn't
do this for itself?
        regards, tom lane


Re: Embedded SQL: Putting a guard around included stdio.h for convenience

От
Michael Meskes
Дата:
On Thu, Oct 02, 2003 at 12:57:37AM +0200, Carsten Klein wrote:
> Well, until now, I have had problems with stuff being declared twice 
> (from stdio.h and successively included include files by stdio.h),
> since postgres sources seemingly do not put a guard around the include 
> statement.
> 
> what i mean is, please, do include the following:
> 
> #ifndef _STDIO_H
> #include <stdio.h>
> #endif /* _STDIO_H */

As Tom already pointed out it is stdio.h's job to guard against double
inclusion. The ifndef should be listed in stdio.h and certainly is on my
Debian system.

> And while we are at it, although I personally think that Embedded SQL is 
> quite obsolete by now (but we have to do this stuff in school, perhaps 
> I'm wrong),

Why is it obsolete? 

Michael
-- 
Michael Meskes
Email: Michael at Fam-Meskes dot De
ICQ: 179140304, AIM/Yahoo: michaelmeskes, Jabber: meskes@jabber.org
Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!


Re: Embedded SQL: Putting a guard around included stdio.h for convenience

От
"Peter Galbavy"
Дата:
Tom Lane wrote:
> What platform are you on, that is so brain-dead that stdio.h doesn't
> do this for itself?

Does POSIX say anything about multiple inclusion of this and others ?

(Genuine question, I do not have the "standards" to hand.)

Peter


Re: Embedded SQL: Putting a guard around included

От
Peter Eisentraut
Дата:
Peter Galbavy writes:

> Does POSIX say anything about multiple inclusion of this and others ?

"Except that the effect of each inclusion of <assert.h> depends on the
definition of NDEBUG, headers may be included in any order, and each may
be included more than once in a given scope, with no difference in effect
from that of being included only once."

-- 
Peter Eisentraut   peter_e@gmx.net