Sowohl C als auch C++ ermöglichen, dass Objekte und Funktionen eine statische Dateiverknüpfung haben, die auch als interne Verknüpfung bezeichnet wird. C++ unterstützt die Verwendung von unbenannten Namespaces anstelle des Dateibereichs, was ein Compilervorteil ist. static ist ein Verknüpfungsmodifikator. Wenn Sie den Dateibereich und die interne Verknüpfung verwenden möchten, sollten Sie in C++ sowohl Namespace als auch Static verwenden. In C benötigen Sie jedoch nur ein statisches Schlüsselwort, um dasselbe zu erreichen.
/* C and C++ code */
static int bufsize = 1024;
static int counter = 0;
static long square(long x)
{
return (x * x);
}
Der bevorzugte Weg, dies in C++ zu tun:
// C++ code
namespace /*unnamed*/
{
static int bufsize = 1024;
static int counter = 0;
static long square(long x)
{
return (x * x);
}
}
Eigentlich ist es nur statische Objekte (nicht funktioniert), die veraltet sind. Siehe C++ - Standard, Anhang D, Abschnitt D.2; –
Ja, dort heißt es nur "Objekte". In C++ ist die Verknüpfung sowohl für Objekte als auch für Funktionen intern und wenn entweder unbenannte Leerzeichen oder statische Verknüpfungen verwendet werden. – alvatar