Extern linkage und C language linkage

FIXME

Wenn man C und C++ in einem Programm gleichzeitigt verwendet, muss man einiges beachten. C++-Funktionen, die aus den C-Funktionen erreichbar sein müssen, sollen mit der C-Bindung deklariert werden.

Dabei sollte man beachten, dass folgenden 2 Beispiele nicht das gleiche bedeuten:

extern "C" void hello()
{
	std::cout << "hello\n";
}

Das war eine Deklaration mit extern linkage und mit C language linkage.

extern "C" {
	void hello()
	{
		std::cout << "hello\n";
	}
}

Und das war eine Deklaration nur mit C language linkage.

Die beiden Beispiele unten sind dagegen equivalent:

extern "C" int foo;
extern "C" void bar();

…und:

extern "C"
{
     extern int foo;
     extern void bar();
}

Quelle: http://tldp.org/HOWTO/C++-dlopen/thesolution.html


Stand: 30.08.2016
: Jürgen Kreick

EOF