-1

Bullet Physics 소스 코드를 작성하려고합니다. 그들의 cmake 물건은 작동하지 않으므로, Bullet 소스 파일을 내 Visual Studio 프로젝트에 바로 복사하고 직접 빌드했습니다. 그러나 64 비트 버전 만 빌드됩니다. 32 비트로 빌드하려고하면 "E2474 사용자 정의 리터럴 연산자를 찾을 수 없습니다"라는 오류가 발생합니다. btScalar.h에서 btAssert를 정의한 것으로 보입니다.Bullet 물리학 소스 코드가 x86으로 빌드되지 않음 - Visual Studio에서 잘못된 전 처리기 지시문 2017

내 프로젝트에 누락 된 부분이 있습니다. 전처리 지시어 또는 설정 또는 뭔가. 누구나이 정의를 살펴보고 Visual Studio 2017 프로젝트에서 어떤 설정을 변경해야 하는지를 알면 놀라운 일입니다. 고마워, 고마워.

프로젝트 링크 : https://github.com/mister51213/BulletSetupTest/tree/master/BulletPhysicsTest1

코드 : 문자열 리터럴과 다음의 요소 사이에 공백없이

#ifdef BT_DEBUG 
    #ifdef _MSC_VER 
     #include <stdio.h> 
     #define btAssert(x) { if(!(x)){printf("Assert "__FILE__ ":%u ("#x")\n", __LINE__);__debugbreak(); }} 
     //#define btAssert(x) 

    #else//_MSC_VER 
     #include <assert.h> 
     #define btAssert assert 
    #endif//_MSC_VER 
#else 
     #define btAssert(x) 
     //#define btAssert(x) { if(!(x)){printf("Assert "__FILE__ ":%u ("#x")\n", __LINE__);__debugbreak(); }} 

#endif 
     //btFullAssert is optional, slows down a lot 
     #define btFullAssert(x) 

     #define btLikely(_c) _c 
     #define btUnlikely(_c) _c 
#else 

답변

1

매크로 확장, 실행

"Assert "__FILE__ 

같은 규칙에 문제가 이 형식을 예약하는 user-defined literals입니다.

이 문제는 이미 C++ 11에서 발생했습니다. 더 많은 예를 들어

"Assert " __FILE__ 
---------^ 

http://en.cppreference.com/w/cpp/language/user_literal#Notes

를 참조하십시오

간단한 해결책은 문자열 리터럴과 다음의 요소 사이에 공백을 추가하는 것입니다