Я пытаюсь создать строку из нескольких макросов / значений для использования в #include
.Я делаю это, чтобы очистить некоторый код для начального состояния в простой системе состояний.
У меня есть 2 переопределяемых макроса по умолчанию (если не определено, есть значение по умолчанию)
#define DEFAULT_STATE StateName // name of class
#define DEFAULT_STATE_LOCATION states/ // location of header file from root
Директива include используется из файла 4 папки из root
, поэтому include должен выглядеть следующим образом
#include "../../../../states/StateName.h"
на основе приведенного выше примера.
Итак, я хочучтобы определить макрос из 4 значений.
../../../../
DEFAULT_STATE_LOCATION
DEFAULT_STATE
.h
в некоторый макрос, скажем DEFAULT_STATE_INCLUDE
, чтобы я мог сказать
#include #DEFAULT_STATE_INCLUDE
(to stringize the value for quotes)
Таким образом, я могу изменитьсостояние по умолчанию и путь из корня файла заголовка для состояния по умолчанию в заголовке префикса, а также источник, использующий #include
, обновлять не нужно, и я могу опускать константы в переопределении каждый раз.
Я не включаю .h
в макрос DEFAULT_STATE
, потому что я использую тот же макрос для создания и экземпляра состояния по умолчанию.
Я пытался использовать конкатенацию ##
и оператор stringize, и некоторые трюки, которые я нашел настрока, но ничего не сработало.
Я могу определить ../../../../
и .h
в их собственных макросах, если необходимо.
Но просто
#define DEFAULT_STATE_INCLUDE ../../../../ ## DEFAULT_STATE_LOCATION ## DEFAULT_STATE ## .h
#include #DEFAULT_STATE_INCLUDE
дает массу ошибок.
Любая помощь приветствуется.Спасибо