私は、ソースも制御も変更もしないC++ライブラリを対象としたObjective-Cラッパーについて取り組んでいます。ヘッダーには、私は、トリガ、様々なコンパイラの警告をインポートするので、私は次の操作を行うために開始しました:#defineの中に#importする方法
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-id-macro"
#pragma clang diagnostic ignored "-Wstrict-prototypes"
#import "dll.hpp"
#pragma clang diagnostic pop
これは素晴らしい作品が、DRYそれを維持するために、私はこれらの輸入品のそれぞれのマクロを定義したいのですが無視された警告プラグマが組み込まれています(このようなヘッダーがいくつかあります)。
このように、各ファイルで、私はこのように一番上に電話をかけることができます。
ImportDllHpp()
それは#define
内から#import
を呼び出して、しかし、そう簡単ではありません。私はかなり近づいて、this answerを使用してプラグマを動作させました。しかし、#import
のための_Pragma
のような関数か、それを達成する別の方法がありますか?
これは私がこれまで持っているものです。
#define _stringify(a) #a
#define ImportRarHpp() \
_Pragma(_stringify(clang diagnostic push)) \
_Pragma(_stringify(clang diagnostic ignored "-Wreserved-id-macro")) \
_Pragma(_stringify(clang diagnostic ignored "-Wstrict-prototypes")) \
#import "dll.hpp"
_Pragma(_stringify(clang diagnostic pop))
代わりに '#include" my-dll.hpp "'を考えていましたが(私はまだC++ 17ではなく)、同じ考え方です。 '#pragma'sと'#import'をそれ自身のファイルに移動し、必要に応じてflleをインクルード/インポートします –