次のスニペットは、PROJECT (Makefile で定義) の値を取り、インクルード ファイル名を作成することになっています。たとえば、PROJECT=classifier の場合、最後に PROJECTINCSTR の classifier_ir.h を生成する必要があります。
サフィックスにアンダースコアを使用しない限り、このコードは機能することがわかりました。ただし、アンダースコアの使用はオプションではありません。コード ベースではあらゆる場所でアンダースコアが使用されています。PROJECT の値の数は限られているため、これを回避できますが、アンダースコアを使用して次のスニペットを実際に機能させる方法を知りたいです。逃れることはできますか?
#define PROJECT classifier
#define QMAKESTR(x) #x
#define MAKESTR(x) QMAKESTR(x)
#define MAKEINC(x) x ## _ir.h
#define PROJECTINC MAKEINC(PROJECT)
#define PROJECTINCSTR MAKESTR(PROJECTINC)
#include PROJECTINCSTR
編集: コンパイラは、PROJECT_ir.h ではなく、classifier_ir.h を含めようとする必要があります。