Название: передать в define список Отправлено: deMax от Сентябрь 21, 2015, 08:53 Собственно для сериализации в ini файл использую следущий дефайн:
#define ADDVALUE(value) add(QString(typeid(value).name()), &value, #value) Код: struct My: public Base { Можно ли сделать так чтобы имя переменной писать только один раз, или хотя бы ADDVALUES(name, c1, c2, c3) ? Как сделать чтобы в режиме отладки отображались переменные класса для которых забыл добавить ADDVALUE() ? Название: Re: передать в define список Отправлено: Racheengel от Сентябрь 23, 2015, 11:50 а что мешает сделать макрос с листом в виде параметра?
Название: Re: передать в define список Отправлено: deMax от Сентябрь 23, 2015, 14:45 Можно пример?
Название: Re: передать в define список Отправлено: Racheengel от Сентябрь 23, 2015, 15:03 ну как-то типа этого
#define ADDVALUES(list) foreach(const QString& s, list) ADDVALUE(s); где list - это QStringList. Для отладки qDebug() тогда можно юзать, типа qDebug() << list Название: Re: передать в define список Отправлено: Igors от Сентябрь 24, 2015, 10:23 Код
Ход мысли понятен: вот задействую # в макросе - и все имена пулеметом/автоматом! Обычно в конце-концов выясняется что возня с такой "системой рычагов" себя не оправдывает, проще было разориться на ту несчастную строку Название: Re: передать в define список Отправлено: Johnik от Сентябрь 25, 2015, 00:16 можно использовать макросы с переменным числом параметров и boost.preprocessor
Пример (для упрощения взял Map): Код
PS. предвижу закидывание тапками "любителями" boost'а Название: Re: передать в define список Отправлено: Racheengel от Сентябрь 25, 2015, 10:14 Вообще, макросы - неблагодарное дело, лучше static функции использовать.
Название: Re: передать в define список Отправлено: deMax от Сентябрь 30, 2015, 20:09 и как узнать имя переменной без макроса, да еще в статичной функции?
например загнать int a,b,c,d; в QMap map; map["a"]=&a; .... Название: Re: передать в define список Отправлено: Igors от Октябрь 01, 2015, 05:08 и как узнать имя переменной без макроса, да еще в статичной функции? Так и писать (map["a"]=&a;). Да, и так для всех, хоть их сотни. Но это делается один раз, и Вы можете иметь любые текстовые имена. например загнать int a,b,c,d; в QMap map; map["a"]=&a; .... |