Другой подход - создать некоторый файл C ++, содержащий то, что вы хотите.Так что для этой цели вам необходимо настроить build .Вы часто используете какой-либо инструмент для автоматизации сборки (например, GNU make , ninja и т. Д.), И вы можете настроить его для генерации некоторого файла C ++ при необходимости(например, добавив несколько строк в ваш Makefile
, если вы используете make
).Программа, генерирующая некоторый код на C ++, может быть скриптом (например, в shell , awk , Python , Guile , ...),какая-то специализированная метапрограмма (например, moc
для программ на Qt), какой-то другой препроцессор, такой как GPP или m4 , или ваша собственная другая программа на C ++ и т. д. Такой подход метапрограммированияобычно используется с C ++ и C с прошлого столетия (для примера смотрите Qt moc , bison , SWIG , ...)
См. Также этот ответ на связанный вопрос (с C).
Вы бы сгенерировали какой-нибудь заголовок, содержащий такие вещи, как
#define a1 123
#define a2 6543
#define a3 12
(вам не нужно =
в таких #define
-s)
, или вы можете сгенерироватьнекоторые enum
как
enum number_en {
a1= 123,
a2= 6543,
a3= 12,
};
Обратите внимание, что генерирование кода C ++ может быть более эффективным (со времени сборки) решением во время выполнения, чем другие (например, std::map
на основе ) подходы.