#define в макрообъекте

130
13

У меня есть следующий прецедент

#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;

спросил(а) 2021-01-19T14:50:38+03:00 2 месяца, 3 недели назад
1
Решение
96

Нет, нет обходного пути. Существует ровно один препроцессорный проход.

Как отмечается в комментариях, шаблоны C++ намного проще. Они скомпилированы реальным компилятором, который поддерживает гораздо более сложную грамматику, может выполнять математику и может выполнять 255 уровней вложенности.

ответил(а) 2021-01-19T14:50:38+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема