In Bezug auf using const
function parameters Ich habe gehört, dass auf einigen OS X-Systemen die Konsistenz eines Parameters in die Funktionssignatur gemangelt wird. Zum Beispiel würde, wenn man die folgende Erklärung in einer Interface-Header-Datei:Ist Funktionsparameterkonstanz nicht kompatibel?
int f(int argument);
aber wenn man nur diese Funktion implementieren würde:
int f(int const argument);
dann könnte dies zu einer Verknüpfung Ausfällen auf OS X führen (aber nicht unter Linux), weil die OS X-Methode, C++ - Funktionssignaturen zu zerlegen, die Konsistenz der Parameter enthält.
Welches ist das korrekte Mangling-Verhalten? Hat der C++ - Standard ein Mitspracherecht?
_'int f (int const Argument); '_ ist ziemlich überflüssig, aber gut, wenn Sie darauf bestehen, dass es sinnvoll ist. –
Aus Interesse, wo hast du das gehört? Das wäre sehr kaputt, wenn es stimmt. –
Das korrekte Verhalten besteht darin, die oberste Ebene "const" zu ignorieren, was "const" bedeutet, was für den Parameter selbst gilt (im Gegensatz zu etwas, auf das sich der Parameter bezieht). Zum Beispiel sind "int * const" und "int *" gleich, aber "int const *" und "int *" sind unterschiedlich. Kaum zu glauben, dass OS X einen Compiler haben würde, der das falsch interpretiert (es ist ein wirklich grundlegender Teil von C++, der schon lange vor OS X bekannt war). –