Using Apple's clang as c++ compiler: In file included from /tmp/cpluspluscheck.KejiIw/test.cpp:3: ./src/include/access/tableam.h:144:16: error: typedef redefinition with different types ('void (*)(Relation, HeapTuple, Datum *, bool *, bool, void *)' (aka 'void (*)(RelationData *, HeapTupleData *, unsigned long *, bool *, bool, void *)') vs 'IndexBuildCallback') typedef void (*IndexBuildCallback) (Relation index, ^ ./src/include/access/tableam.h:36:8: note: previous definition is here struct IndexBuildCallback; ^
(there are some cascading errors, but this is the important one) Kinda looks like you can't get away with using "struct" on a forward declaration of something that is not actually a struct type. regards, tom lane