GMP, C++ and extern "C"

Emmanuel Thomé Emmanuel.Thome at normalesup.org
Mon Nov 20 16:23:20 CET 2006


On Mon, Nov 20, 2006 at 03:52:27PM +0100, Niels Möller wrote:
> I take it there's no chance of gmp supporting
> 
>   extern "C" {
>     #include <gmp.h>
>   }
> 
> ?

``extern "C"'' does not mean ``hey, disable C++ here'', it only mandates
C linkage.

C++ implementations (shall) always define __cplusplus, and understand the
extern "C" idiom.

> Then maybe adding C++ guards to all nettle include files is the
> easiest solution, after all.

Even when writing a C++-ignorant library, it is wise to do so,
indeed. Otherwise you'll encounter the difficulties you have here.

> Even though I really would have preferred to let those users who
> actually use (and know!) C++ handle all the C++ details.

It's more a ``be gentle with C++ users'' kind of detail. Nothing very
technical.

> The most time consuming part that change is not the editing of the
> header files, but the introduction of a C++ test case, and the
> corresponding changes to Makefiles and configure script to compile and
> use the test case only if a C++ compiler is available, and sort out
> which compiler is to be used for which files.

?

I don't see why you would have to to that. The 
	#ifdef	__cplusplus
	extern "C" {
	#endif
	...stuff
	#ifdef  __cplusplus
	}
	#endif
works inconditionally, and allows your header to be used properly from
within a C++ program.

Regards,

E.


More information about the gmp-bugs mailing list