2012-04-24 5 views
9

SWIG가 경고 한 내용과이를 피하는 방법에 대해 설명해주십시오.SWIG의 경고 503은 무엇입니까?

Warning 503: Can't wrap 'operator()' unless renamed to a valid identifier. 
Warning 503: Can't wrap 'operator =' unless renamed to a valid identifier. 
Warning 503: Can't wrap 'operator *' unless renamed to a valid identifier. 

SWIG에서 생성 된 C++ 코드가 Android NDK로 컴파일 될 때 경고가 생성됩니다.

+8

G ++ 경고가 아니라 SWIG 경고입니다. – Flexo

+1

나는 그것이 SWIG와 더 유사하다고 말할 것입니다. Java에서 해당 연산자를 사용하려는 경우가 아니면 문제가되지 않습니다. –

+0

정보를 제공해 주셔서 감사 드리며 질문을 수정했습니다. – arsalank2

답변

13

Java에는 operator() 또는 operator=이 C++와 같은 의미로 없으므로 SWIG가 직접 감쌀 수 없습니다. 그들이 중요 할 수도 있기 때문에 감싸지지 않았 음을 설명하는 경고가 표시됩니다. (누락 된 operator=는 특히 때로는 좋지 않을 수 있음).

%module Sample 

struct test { 
    bool operator()(); 
}; 

하지만 당신은 경고를 침묵과 같은 말을하여 일반 멤버 함수로 직접 운영자를 노출 꿀꺽 꿀꺽을 알 수 있습니다 :

%module Sample 

%rename(something_else) operator(); 

struct test { 
    bool operator()(); 
}; 
swig -Wall -c++ -java을 실행할 때

이 코드는 경고를 전시

생성 된 래퍼에 operator() 대신 something_else이라는 함수가 추가되었습니다.

또는 당신이 사용하는 사람들을 무시하는 것은 잘 것을 SWIG을 주장 할 수 있습니다

%ignore operator() 

(당신은 또한 클래스 이름과 사업자 자격으로 덜 광범위하게 그 지침 중 하나를 적용 할 수 있습니다).

3

대상 언어로 사용하려면 과부하 연산자를 특수한 방식으로 SWIG에서 처리해야합니다. here을 참조하십시오.