2015-01-31 3 views
0

나는 MSVC++ 2013을 사용하고 있으며 Clang 플러그인을 설치했습니다. 그러나GCC의/LLVM의 STL 헤더에 VS를 사용할 수 있습니까?

, 내가 STL을 사용하고 있기 때문에, I'm getting bugs like this one :

In file included from C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\map:6: 
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xtree(1667,3) : error: cannot compile this try statement yet 
      _TRY_BEGIN 
      ^~~~~~~~~~ 

actual code

그들은 꽤 많이 있습니다. 사실, 헤더 파일에만 문제가 있으며, 혼란 스럽습니다.

실제 컴파일러 버그입니까? MS의 STL 구현과의 비 호환성?

만약 그렇다면 어떻게 수정해야합니까?

나는 GCC 또는 LLVM의 헤더를 사용하는 것을 생각했지만, 어떻게해야할지 모르겠다. 모든 포인터가 크게 감사 할 것입니다.

+1

모든 표준 라이브러리는 컴파일러 관련 확장 프로그램을 사용하여 작동합니다. Clang은 MSVC 확장을 이해하지 못하고 MSVC가 gcc/clang 라이브러리를 사용할 수 없게됩니다. clang과 gcc는 동일한 확장자를 갖기 위해 동일한 라이브러리를 사용할 수 있습니다. GCC/clang 호환 헤더를 사용하도록 확장 프로그램에 알려야하지만 어떻게해야할지 모르겠다. –

+0

@MooingDuck 음, 'clang-cl.exe'를 사용하고 있습니다. 정확히 이걸 만들지 않았습니까? – rev

+0

해당 기능에 대해 알지 못했습니다. http://clang.llvm.org/docs/UsersManual.html#clang-cl은 "Visual Studio 기본 도구 명령 프롬프트 또는 vcvars32.bat 등을 사용하여 환경이 설정된 일반 명령 프롬프트에서 실행해야합니다. "그것이 끝나고 있습니까? –

답변

1

, 나는 이해하지 사용자들은 정확한 매크로를 보였다. 이 특정 오류는 _HAS_EXCEPTIONS0으로 정의 된 경우 MSVC 헤더 자체에 xstddef가 포함될 때 발생할 수 있습니다. 그 매크로에 다른 조건을 찾을 수 없으므로, 당신의 불만은 예외없이 컴파일되고있는 것으로 보입니다.

이것은 내 머리에 종소리를 울리고 Clang은 창문에서 오랫동안 예외가있는 문제가있었습니다. 이 링크에서 볼 때 여전히 MSVC 호환 모드에서 "예외 및 SEH : 최소 .Clang은 두 가지 구문을 모두 구문 분석 할 수 있지만 호환되는 핸들러를 내보내는 방법을 알지 못합니다 .Clang은 예외를 throw 할 수는 없지만 다시 throw 할 수 있습니다." http://clang.llvm.org/docs/MSVCCompatibility.html

0

llvm의 libC++를 msvc로 컴파일 할 수 있다고 생각하지 않습니다. 가장 좋은 방법은 이론적으로 Visual C++ 컴파일 코드와 링크 될 수있는 MSVC 호환 코드를 생성하기 위해 LLVM을 사용하는 것입니다. 당신은 환경이 권한을 설정 주장 때문에

http://clang.llvm.org/docs/MSVCCompatibility.html