Следующий фрагмент должен принимать значение PROJECT (определено в Makefile)
и создайте имя включаемого файла. Например, если PROJECT = классификатор, то в конце он должен сгенерировать classifier_ir.h для PROJECTINCSTR
Я считаю, что этот код работает до тех пор, пока я не пытаюсь использовать подчеркивание в суффиксе. Однако использование подчеркивания не является обязательным - наша кодовая база использует их повсюду. Я могу обойти это, потому что есть ограниченное количество значений для ПРОЕКТА, но я хотел бы знать, как заставить следующий фрагмент на самом деле работать с подчеркиванием. Можно ли избежать?
#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
Редактировать: компилятор должен попытаться включить classifier_ir.h, а не PROJECT_ir.h.