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

Загнать N define в список. - C++

Восстановить пароль Регистрация
 
unnreal
0 / 0 / 0
Регистрация: 29.08.2010
Сообщений: 4
29.08.2010, 08:55     Загнать N define в список. #1
Есть:
C++
1
2
3
4
5
6
#define IP0  1.1.1.1
#define IP1  2.2.2.2
.....
#define IPN  n.n.n.n
 
#define IPCOUNT N
N может быть любым.

Необходимо считать их в массив.

Самый тупой вариант что приходит в голову:

C++
1
2
3
4
5
set<IPAddress> ip;
 
#ifdef IP0  ip.insert(IPAddress(IP0));
#ifdef IP1  ip.insert(IPAddress(IP0));
....
Но понятное дело это очень уныло.

Еще пробовал использовать:

C++
1
2
3
4
#define concat(a, b) a##b
 
for (int i=0;i<IPCOUNT;i++)
  ip.insert(IPAddress(concat(IP,i)));
Но лезет ошика типа IPi не определено. как можно передать туда значения?
Либо может как-то о другому решается моя задача?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2010, 08:55     Загнать N define в список.
Посмотрите здесь:

C++ define
C++ Программа должна загнать в динамический массив структур...
C++ #define
define C++
C++ #define
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
29.08.2010, 09:11     Загнать N define в список. #2
А не проще оформить все в текстовый файл и читать с него в программе?
unnreal
0 / 0 / 0
Регистрация: 29.08.2010
Сообщений: 4
29.08.2010, 09:14  [ТС]     Загнать N define в список. #3
Вариант абсолютно исключенный. Эти дефайны должны быть внутри программы намертво вкомпилены.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
29.08.2010, 09:33     Загнать N define в список. #4
Ну если у тебя все октеты в адресе одинаковые и равны номеру адреса в списке,
Цитата Сообщение от unnreal Посмотреть сообщение
#define IP0 1.1.1.1
#define IP1 2.2.2.2
.....
#define IPN n.n.n.n
#define IPCOUNT N
то можно задать базовый адрес и количество адресов, и высчитывать остальные адреса по ходу программы.
unnreal
0 / 0 / 0
Регистрация: 29.08.2010
Сообщений: 4
29.08.2010, 09:46  [ТС]     Загнать N define в список. #5
Да нет, они разные конечно же. Это я для примера привел.
Andrew_Lvov
Эксперт C++
 Аватар для Andrew_Lvov
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
29.08.2010, 10:23     Загнать N define в список. #6
Обязательно дефайны? Глобальный константный массив может ?
Mencey
 Аватар для Mencey
145 / 92 / 7
Регистрация: 22.07.2010
Сообщений: 424
29.08.2010, 12:08     Загнать N define в список. #7
Цитата Сообщение от unnreal Посмотреть сообщение
Эти дефайны должны быть внутри программы намертво вкомпилены.
Дефайны как я знаю существуют только до компиляции во время препроцессорной обработки, а во время компиляции остаются только значения дефайнов.
unnreal
0 / 0 / 0
Регистрация: 29.08.2010
Сообщений: 4
29.08.2010, 12:23  [ТС]     Загнать N define в список. #8
Цитата Сообщение от Andrew_Lvov Посмотреть сообщение
Обязательно дефайны? Глобальный константный массив может ?
Блин, точно! Спасибо! Вот что значит свежий взгляд.

Добавлено через 4 минуты
Цитата Сообщение от Mencey Посмотреть сообщение
Дефайны как я знаю существуют только до компиляции во время препроцессорной обработки, а во время компиляции остаются только значения дефайнов.
Хе, я тоже так думал, до вчерашнего вечера.

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <stdlib.h>
 
#define abs(x) x>0 ? x : -x
 
int main(int argc, char *argv[]) {
    int xy = 1;
    xy=rand()*-1;
    printf("%d", abs(xy));
 
    return xy;
}
Угадайте что покажет вывод? Случайное число. Это значит что если макрос с параметрами, то он не просто встраивается.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2010, 12:29     Загнать N define в список.
Еще ссылки по теме:

C++ c++11 и $define
C++ Как загнать текст из консоли в массив и как загнать текст из файла в массив
Загнать файл в массив C++

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

Или воспользуйтесь поиском по форуму:
Mencey
 Аватар для Mencey
145 / 92 / 7
Регистрация: 22.07.2010
Сообщений: 424
29.08.2010, 12:29     Загнать N define в список. #9
Цитата Сообщение от unnreal Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdlib.h>
#define abs(x) x>0 ? x : -x
 
int main(int argc, char *argv[]) {
  int xy = 1;
  xy=rand()*-1;
  printf("%d", abs(xy));
return xy;
}
Аналогичный код(после обработки препроцессора):

C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[]) {
    int xy = 1;
    xy=rand()*-1;
    printf("%d", xy > 0 ? xy : -xy);
 
    return xy;
}
Yandex
Объявления
29.08.2010, 12:29     Загнать N define в список.
Ответ Создать тему
Опции темы

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