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?