1

マルチプラットフォームプロジェクトに取り組んでいます。できれば外部ツールを使用せずに、OS 固有のインクルードを簡単かつ迅速に管理できる方法が必要です。

私はこのようなものが欲しいです(私はうまくいかないことをよく知っています)

#define PLATFORM_A 1
#define PLATFORM_B 2

#ifndef TARGET_PLATFORM
//ERROR
#endif

#if TARGET_PLATFORM == PLATFORM_A
    #define DIR "a"
#elif TARGET_PLATFORM == PLATFORM_B
    #define DIR "b"

#define PLATFORM_INCLUDE(file) \
    #include "platforms/" DIR "/" file
4

4 に答える 4

5

私がかなり頻繁に目にする 1 つのセットアップは次のとおりです。

// platform.h

#if defined PLATFORM_A
    #include "platform_a.h"
#elif defined PLATFORM_B
    #include "platform_b.h"
#else
    // #pragma error or whatever
#endif

その後#include "platform.h"、必要に応じて。

于 2013-05-14T19:25:10.617 に答える
3

異なるプラットフォームに同じファイル ツリーがある場合は、ソース コードでインクルード ファイルのファイル名のみを指定し、プラットフォームに依存するインクルード ディレクトリを使用できます。このディレクトリは、環境変数によって簡単に構成できます。

于 2013-05-14T19:24:08.987 に答える
2

プラットフォーム自体でプリプロセッサ ディレクティブを定義できます。このようにして、次を使用できます。

#ifndef MAC // MAC performs #define MAC

#ifndef WINDOWS // Windows performs #define WINDOWS

#ifndef UNIX // Unix performs #define UNIX

// ERROR

#endif

#endif

#endif
于 2013-05-14T19:21:05.900 に答える
-1

文字列の間に + を使用してみてください。それは C++ 構文である必要があります。

次のようなものです:

#define PLATFORM_INCLUDE(file) \
    #include "platforms/" + DIR + "/" file
于 2013-05-14T19:34:09.157 に答える