Форум программистов, компьютерный форум CyberForum.ru

Вопрос по директивам препроцессора - C++

Войти
Регистрация
Восстановить пароль
 
Mustik
56 / 56 / 2
Регистрация: 10.07.2011
Сообщений: 229
28.02.2012, 00:23     Вопрос по директивам препроцессора #1
Использую VS 2008.
Работал с микроконтроллерами PIC с компилятором HI-TECH, так вот, там была такая директива ##n. Работала она так: допустим есть переменные Variable1 и Variable2.
C++
1
2
3
#define SetVarValue( n,value ) Variable##n = value
SetVarValue( 1,10 );    // аналогично Variable1 = 10
SetVarValue( 2,20 );    // аналогично Variable2 = 20
Т.е. ##n заменяется заданным значением из макроса и при n = 1, Variable##n будет аналогично Variable1, при n = 2 - Variable2.
Так вот, есть ли что-нибудь похожее в компиляторе VS 2008?
Допустим, если есть много checkBox'ов с номерами 1 - 100, чтобы не перечислять их по отдельности, написать какой-нить цикл, типа
C++
1
2
3
4
for( int i = 0; i < 100; ++i )
{
        checkBox##i->Text = i.ToString();    
}
Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2012, 00:23     Вопрос по директивам препроцессора
Посмотрите здесь:

директива препроцессора C++
C++ Директивы препроцессора
C++ увидеть результат препроцессора
Обработка препроцессора C++
C++ Массивы и директив препроцессора
C++ Директива препроцессора #if
C++ Использование препроцессора
Подключение директив препроцессора C++
C++ макрос препроцессора
C++ Директивы препроцессора
C++ Объясните вывод препроцессора
C++ Использование директив препроцессора

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
28.02.2012, 00:27     Вопрос по директивам препроцессора #2
Mustik, это стандартная конструкция языка, еще си причем
должно работать также
будет нечто
C++
1
2
3
#define SET_CB_TEXT(NUM, TEXT) do { checkBox##NUM->Text = TEXT; } while (0)
// ...
SET_CB_TEXT(3, i.ToString());
Mustik
56 / 56 / 2
Регистрация: 10.07.2011
Сообщений: 229
28.02.2012, 01:06  [ТС]     Вопрос по директивам препроцессора #3
Цитата Сообщение от alex_x_x Посмотреть сообщение
Mustik, это стандартная конструкция языка, еще си причем
должно работать также
будет нечто
C++
1
2
3
#define SET_CB_TEXT(NUM, TEXT) do { checkBox##NUM->Text = TEXT; } while (0)
// ...
SET_CB_TEXT(3, i.ToString());
C++
1
2
3
4
for( int i = 0; i < 100; ++i )
{
        SET_CB_TEXT(i,i.ToString());
}
Жаль воспринимает i как chechBoxi
Может есть варианты?
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
28.02.2012, 01:08     Вопрос по директивам препроцессора #4
Цитата Сообщение от Mustik Посмотреть сообщение
Жаль воспринимает i как chechBoxi
Может есть варианты?
вариантов нет, потому как иначе невозможно
код генерируется во время компиляции, переменные тут не могут участвовать

впрочем очевидно - используйте массив чекбоксов
Mustik
56 / 56 / 2
Регистрация: 10.07.2011
Сообщений: 229
28.02.2012, 01:14  [ТС]     Вопрос по директивам препроцессора #5
Цитата Сообщение от alex_x_x Посмотреть сообщение
впрочем очевидно - используйте массив чекбоксов
Да, спасибо, я уже тоже задумался об этом.
Плохо, что придется вручную инициализацию этих чекбоксов делать или делать массив указателей на эти чекбоксы
Yandex
Объявления
28.02.2012, 01:14     Вопрос по директивам препроцессора
Ответ Создать тему
Опции темы

Текущее время: 18:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru