Re: C++ and using C functions - Mailing list pgsql-hackers

From Andreas Pflug
Subject Re: C++ and using C functions
Date
Msg-id 3F54A2AC.7060406@pse-consulting.de
Whole thread Raw
In response to C++ and using C functions  (Czuczy Gergely <phoemix@harmless.hu>)
List pgsql-hackers
Czuczy Gergely wrote:

>-----BEGIN PGP SIGNED MESSAGE-----
>Hash: SHA1
>
>hello
>
>i've tried to write a stored function in C++, using the libpq library, but
>the g++(3.3.1) was unable to pass through the headers. there are a lot's
>of reserved words used in structs as member names, such as delete,using,
>namespace, and so on.
>
>i'm using pgsql 7.3.4.
>how can I fix it? i think so, i should modify the header files, i've tried
>to put it into an ``extern "C" {...}'' block, but i didn't solve anything.
>
>any ideas?
>
>Bye,
>
>Gergely Czuczy
>mailto: phoemix@harmless.hu
>PGP pubkey: http://phoemix.harmless.hu/phoemix.pgp
>iRCNet: #demoscene   ICQ: 8067175
>
>The point is, that geeks are not necessarily the outcasts
>society often believes they are. The fact is that society
>isn't cool enough to be included in our activities.
>-----BEGIN PGP SIGNATURE-----
>Version: GnuPG v1.0.6 (GNU/Linux)
>Comment: For info see http://www.gnupg.org
>
>iD8DBQE/VKBDbBsEN0U7BV0RAkJPAKCg2/0JJEy+hhV7r3zcBAgYbWFRWQCg83/X
>kj5EXUhpsIiObE5DOn/jsgc=
>=H3YA
>-----END PGP SIGNATURE-----
>
>  
>
You need to redefine several reserved names before may include 
postgresql headers. This is an extract what I needed:

#define using __using
#define typeid __typeid
#define typename __typename
#define namespace __namespace
#define delete __delete
extern "C"
{
#include "postgres.h"
#include "executor/spi.h"
#include "funcapi.h"
}
#undef using
#undef typeid
#undef typename
#undef namespace
#undef delete

Regards,
Andreas



pgsql-hackers by date:

Previous
From: Andreas Pflug
Date:
Subject: Re: TCP/IP with 7.4 beta2 broken?
Next
From: Vince Vielhaber
Date:
Subject: Re: C++ and using C functions