#define в макрообъекте
У меня есть следующий прецедент
#define ConstantDouble( T )\
T( Alert, c_alert )
// I want to generate #define macro dynamically
#define T( x, y ) #define #x y <-- Error
ConstantDouble( T )
#undef T
#define Constant( x ) Constants::x ; <-- x is Alert and I want the prev #define to kick in and convert this to c_alert
// Want to generate members variables directly
class Constants
{
#define T( x, y ) static double y;
ConstantDouble( T )
#undef T
};
Это обходной путь для этого?
Я хотел бы иметь что-то подобное в моем имени
Constant( "Alert" )
которая преобразуется в Constants::c_alert;
Нет, нет обходного пути. Существует ровно один препроцессорный проход.
Как отмечается в комментариях, шаблоны C++ намного проще. Они скомпилированы реальным компилятором, который поддерживает гораздо более сложную грамматику, может выполнять математику и может выполнять 255 уровней вложенности.