+#ifndef NOT_C_CODE /* Actually means C or C++ */
+# if defined (__cplusplus)
+/* Avoid C++ keywords used as ordinary C identifiers */
+# define class c_class
+# define new c_new
+# define this c_this
+# define catch c_catch
+# define not c_not
+
+# define EXTERN_C extern "C"
+# else /* C code */
+# define EXTERN_C extern
+# endif
+#endif /* C or C++ */
+