Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Макрос объединения строк, Что-то не так 
:(
    Опции темы
Andrey44
Дата 24.12.2008, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 2
Всего: 26



У меня есть строка к которой надо дописать букву и цифру.
Я делаю так:
Код

#define ID_MEASURESUB(name, g, i)        {#name, name ## g ## i}


//Потом в цикле мне надо добавить комманды

for(int i = 0; i < 10; i++)
    {
        manager->AddCommand(ID_MEASURESUB("ID_Measure", "A", i),            CmdMesureSubSelected::ID,            IUiManager::constant, i);
//в результате должно получиться - ID_MeasureА0....................ID_MeasureА9
    }


Компилер очень ругается на такое. Что не так? Подскажите.
Бьюсь уже больше часа smile 

Это сообщение отредактировал(а) Andrey44 - 24.12.2008, 11:23


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Alek86
Дата 24.12.2008, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Andrey44, а ты сам подставь - увидишь
одни только фигурные скобки в вызове функции чего стоят


--------------------
user posted image    user posted image
PM MAIL   Вверх
Andrey44
Дата 24.12.2008, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 2
Всего: 26



Alek86, Да я уже как только не пробовал
Код

#define ID_MEASURESUB(name, g, i)        name ## g ## i

Так тоже не работает


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Alek86
Дата 24.12.2008, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Andrey44, а может попробуешь понять, что тебе нужно?
для

Код
#define ID_MEASURESUB(name, g, i)        name ## g ## i

подстановка
Код
ID_MEASURESUB("ID_Measure", "A", i)

тебе вернет что-то вроде
"ID_MeasureA"i

я бы, ответил как нужно написать, но не понимаю, что ты тудадолжен передавать

ЗЫ. и вапще, юзай функции smile

Код

#include <string>
#include <sstream>

std::string Func(const std::string& str1,  const std::string& str2, size_t num) {
 std::stringstream res;
 res << str1;
 res << str2;
 res << num;
 return res.str();
}


Добавлено через 3 минуты и 2 секунды
а, у тя строки генерятся...
тогда опредеолись, чего ты от макроса хочешь


--------------------
user posted image    user posted image
PM MAIL   Вверх
Andrey44
Дата 24.12.2008, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 2
Всего: 26



Всем спасибо, разобрался.
Немного был далек от этого, теперь все понял


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
mes
Дата 24.12.2008, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



макрос не может получaть данные рантайма.. в Вашeм случае значение переменной i.

Это сообщение отредактировал(а) mes - 24.12.2008, 13:17


--------------------
PM MAIL WWW   Вверх
Andrey44
Дата 24.12.2008, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 2
Всего: 26



mes, да я уже это понял.
Это все делается на этапе компиляции.
Хотелось помудрить, но как работать правильно с макросами не знал. Покопал МСДН
Короче поборол я это все CString-ом


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.