-1

Bullet Physicsソースコードを作成しようとしています。彼らのcmakeのものはどれも動作しないので、Bulletソースファイルを私のビジュアルスタジオプロジェクトにそのままコピーし、直接ビルドしました。ただし、64ビット版のみがビルドされます。 32ビットでビルドしようとすると、「E2474ユーザ定義のリテラル演算子が見つかりません」というエラーが表示されます。これはbtScalar.hのbtAssertの定義から来ているようです。Bullet物理ソースコードがx86でビルドされていない - Visual Studioで誤ったプリプロセッサディレクティブが発生する2017

私のプロジェクトにはいくつかプリプロセッサ指令または設定または何か。誰でもこれらの定義を見て、私のVisual Studio 2017プロジェクトでどのような設定を変更する必要があるかを見ることができれば、それは素晴らしいことです。ありがとうございます。

プロジェクトリンク: https://github.com/mister51213/BulletSetupTest/tree/master/BulletPhysicsTest1

コード:

"Assert "__FILE__ 

実行のような文字列リテラルと次の要素の間にスペースのない

#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

マクロ展開、ルールの問題にこの形式を予約するuser-defined literalsの場合

これは既にC++ 11で発生しています。より多くの例については

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

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

を参照してください。

簡単な解決策は、単に文字列リテラルと次の要素の間にスペースを追加することです

関連する問題