루비 모듈을 컴파일 하려다가 컴파일러가 막혔습니다. 나는 그것이 ruby.h의 한 줄과 관련이있을 것이라고 생각한다 :C 프로토 타입 구문을 밑줄
void rb_check_type _((VALUE,int));
전에는 _이 구문을 본 적이 없다. 무슨 뜻이에요? 그것은 내 컴파일러 (Visual Studio)에 문제를 일으킬 수 있습니까?
루비 모듈을 컴파일 하려다가 컴파일러가 막혔습니다. 나는 그것이 ruby.h의 한 줄과 관련이있을 것이라고 생각한다 :C 프로토 타입 구문을 밑줄
void rb_check_type _((VALUE,int));
전에는 _이 구문을 본 적이 없다. 무슨 뜻이에요? 그것은 내 컴파일러 (Visual Studio)에 문제를 일으킬 수 있습니까?
'_'매크로를 사용하여 매크로 호출과 비슷하게 보입니다. 그것의 두 배 parens는 공짜입니다. 일반적으로 임의의 수의 매개 변수로 함수 호출을 생성 할 수있는 복잡한 매크로를 호출 할 때만 볼 수 있습니다.
따라서, 여러 가지 가능성이있을 것 같다 :
실제로 컴파일러에서 어떤 오류가 발생했는지에 대해 자세히 알려주지 않았으므로 그 이상의 조언은 드릴 수 없습니다.
매크로는 실제로는 ruby.h (또는 ruby.h의 .h라고 부르기도합니다)에서 '_'라는 이름으로 지정됩니다. 다른 패키지가 같은 일을하는 것이 더 나쁩니 다. wxWidgets. g ++에서 3.3 일 수 :
#include "ruby.h"
#undef _
#include "wx/filename.h"
하고 있지만, 완전하게 정의를 해제 4.6.1 #undef를 ++ g에서 _의 wxWidget의 버전 (이 나를 위해 일을 일어) 사용하는 것이 컴파일 된 출력 _ 에도 불구하고 wxWidgets 앞에 #undef가 발생했습니다. 이는 : 나는 루비의 _ 오프 WX 년대 _ 켜지 않고 해제 할 수 없습니다
솔루션을 실행하는 방법을 깨지 않고는 양 당사자가 멀리받지 않고 불분명 보인다 떠날 수 없다 매크로에서. 내 코드에서 네임 스페이스를 사용하여이 코드를 주위에 가져 오는 방법을 찾지 못했습니다. 여전히 시도 중입니다 ...