Leandro Fanzone <[EMAIL PROTECTED]> writes: > I have compiled PostgreSQL 7.1.2 with gcc 3.0.1, and have the following > problem: if I include first libpq++.h before iostream, id est: > #include <libpq++.h> > #include <iostream> > the compiler complains: > This is because somewhere in PostgreSQL you have the following code: > #ifndef true > #define true ((bool)1) > #endif Yeah. c.h has #ifndef __cplusplus #ifndef bool typedef char bool; #endif /* ndef bool */ #endif /* not C++ */ #ifndef true #define true ((bool) 1) #endif #ifndef false #define false ((bool) 0) #endif It's been like that for quite some time, but it's always struck me as bizarre: if we're willing to trust a C++ compiler to provide type bool, why would we not trust it to provide the literals true and false as well? ISTM the code should read #ifndef __cplusplus #ifndef bool typedef char bool; #endif #ifndef true #define true ((bool) 1) #endif #ifndef false #define false ((bool) 0) #endif #endif /* not C++ */ Does anyone have an objection to this? regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]