# Writing Extensions in C++

It is possible to write extension modules in C++. Some restrictions apply. If the main program (the Python interpreter) is compiled and linked by the C compiler, global or static objects with constructors cannot be used. This is not a problem if the main program is linked by the C++ compiler. All functions that will be called directly or indirectly (i.e. via function pointers) by the Python interpreter will have to be declared using `extern "C"`; this applies to all ``methods'' as well as to the module's initialization function. It is unnecessary to enclose the Python header files in `extern "C" {...}` -- they use this form already if the symbol ``__cplusplus`' is defined (all recent C++ compilers define this symbol).