Lists: | pgsql-hackers |
---|
From: | "mingsoftt" <mingsoftt(at)singnet(dot)com(dot)sg> |
---|---|
To: | <pgsql-hackers(at)postgresql(dot)org> |
Subject: | visual c++ compile error when included spi.h and trigger.h |
Date: | 2009-10-15 09:44:43 |
Message-ID: | 000a01ca4d7c$20549ce0$e316840a@ming4937g |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-hackers |
hi there,
i have trouble compiling a c style program ( filename with extension cpp) written for visual C++.
When i added the following #includes,
>>> #include "spi.h"
>>> #include "trigger.h"
compilation errors say "error C2899: typename cannot be used outside a template declaration".
I need the above includes for postgres triggers.
If the above #includes were removed, leaving behind
>>>#include "postgres.h"
>>>#include "fmgr.h"
then there is no compilation error.
A check on msdn reveals that the error is because in visual c++, the word "typename" is a keyword.
Unfortunately, it happens ( coincidence) that postgres also uses the word "typename" in its header files, as in below -
typedef struct ColumnDef
{
NodeTag type;
char *colname; /* name of column */
TypeName *typename; /* type of column */
...
}
I have thought of making visual c++ of not recognizing "typename" as a keyword, say, by turning some compiler options to forced c mode ( rather than c++).
Is there indeed such an option? If not, is there a way to resolve my problem as described above?
Would appreciate any help ...
thanks and regards,
baluku
From: | Peter Eisentraut <peter_e(at)gmx(dot)net> |
---|---|
To: | mingsoftt <mingsoftt(at)singnet(dot)com(dot)sg> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: visual c++ compile error when included spi.h and trigger.h |
Date: | 2009-10-15 13:07:09 |
Message-ID: | 1255612029.1048.0.camel@fsopti579.F-Secure.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-hackers |
On Thu, 2009-10-15 at 17:44 +0800, mingsoftt wrote:
> I have thought of making visual c++ of not recognizing "typename" as a
> keyword, say, by turning some compiler options to forced c mode
> ( rather than c++).
> Is there indeed such an option? If not, is there a way to resolve my
> problem as described above?
Wait for 8.5. Before that, server header files are not C++ safe. What
you discovered is only one of several problems.