2016-06-01 3 views
8

많은 펄 XS 코드는 const char *을 XS 하위의 반환 값으로 사용하지만 결코 char *이 아닙니다. 예를 들어 : const을 선호하는 이유XS는 왜 const char *를 사용합니까?

const char * 
version(...) 
    CODE: 
     RETVAL = chromaprint_get_version(); 
    OUTPUT: RETVAL 

xs-fun에서 코드

누군가가 설명 할 수 있습니까? 내 테스트에서 반환 된 스칼라는 const 사용 여부에 관계없이 수정할 수 있습니다.

답변

8

명확성을 위해서입니다. chromaprint_get_version 함수는 const char *을 반환하므로 XSUB는 const char * 반환 형식으로 정의해야합니다. built-in typemap을 살펴 본다면 const char *, char * 또는 unsigned char *을 사용하든 상관 없습니다. 그들은 모두 T_PV 타입 맵을 사용합니다. 모든 경우에 XSUB는 항상 수정할 수있는 C 문자열의 사본을 포함하는 SV를 반환합니다.

관련 문제