Viele Perl-XS-Codes verwenden const char *
als Rückgabewert eines XS-Subs, aber niemals nur char *
. Zum Beispiel:
Code von xs-fun
Kann jemand erklären, warum const
bevorzugt wird? In meinem Test ist der zurückgegebene Skalar modifizierbar, ob const
verwendet wird oder nicht.
Es ist nur für die Klarheit. Die Funktion chromaprint_get_version
gibt ein const char *
zurück, daher sollte das XSUB auch mit dem Rückgabetyp const char *
definiert werden. Wenn Sie sich die integrierte typemap ansehen, ist dies nicht der Fall Machen Sie einen Unterschied, ob Sie const char *
, char *
oder sogar unsigned char *
verwenden. Sie alle verwenden die T_PV
typemap. In allen Fällen gibt XSUB ein SV zurück, das eine Kopie der C-Zeichenfolge enthält, die immer änderbar ist.