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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
_Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
#1

Сцепить строку в макросе - C++

10.07.2015, 22:45. Просмотров 268. Ответов 2
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
#define TEST(a) test ## a
 
int main()
{
    for(int i = 1;i<=4; ++i)
        TEST(i);
}
Нужно получить имена test1 ...test4, но выходит testi.
Как быть?


Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2015, 22:45     Сцепить строку в макросе
Посмотрите здесь:

Ошибка в макросе - C++
#include &lt;iostream&gt; using namespace std; #define function(x) {\ cout&lt;&lt;x&lt;&lt;endl;\ } int main()

(void) в макросе define - C++
Добрый день! Разбираюсь со строкой: #define lua_readline(L,b,p) \ ((void)L, fputs(p, stdout), fflush(stdout), /* show prompt */ \ ...

Формат строки в макросе - C++
Добрый день, что-то я уже запутался. Как мне получить строку после обработки форматом для успешного вывода 59 строки при этом не...

Что значит запись в макросе - C++
#define MAX(x,y) (x &gt; y ? x : y) Собсно,макрос,который находит наибольшее число. Вначале идёт сравнение,а вот дальше я не понял,для...

что значит L##x в макросе #define _T(x) L##x? - C++
и что значит выражение #define X почему отсутствует второй параметр? Заранее спасибо за ответы.

Как в макросе передать параметр в строковый литерал? - C++
Как в макросе передать параметр в строковый литерал? #define f(s) &quot;left##s##right&quot; не работает. Т.к. по команде cout &lt;&lt;...

В заданной числовой вещественной матрице размерности N*N поменять местами K-ую строку и L-ую строку - C++
Помогите пожалуйста написать прогу для консоли) В заданной числовой вещественной матрице размерности N*N поменять местами K-ую строку и...

Поменять местами строку с максимальный элемент и строку с минимальным элементом матрицы - C++
привет!я хотел бы попросить знающих людей написать программу на языке С!надо поменять местами рядок в котором есть максимальный элемент с...

Описать строку А. Из входной последовательности символов записать в строку А только цифры - C++
Описать строку А. Из входной последовательности символов записать в строку А только цифры.

Функция, которая копирует строку в другую строку заданное количество раз - C++
Помогите!!!! срочно нужна задача. Не знаю как сделать. Разработать функцию, которая копирует строку в другую строку заданное количество...

Поменять местами первую строку и строку сумма элементов которой минимальна - C++
Дан двумерный массив размера NxM. Поменять местами первую строку и строку сумма элементов которой минимальна. Вывести полученную матрицу на...

Ввести строку, подсчитать сколько раз первая буква входит в строку - C++
Ввести строку, подсчитать сколько раз первая буква входит в строку. C++


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6909 / 4102 / 933
Регистрация: 30.01.2014
Сообщений: 6,893
10.07.2015, 22:58     Сцепить строку в макросе #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от _Valera_ Посмотреть сообщение
Как быть?
Никак, макросы не обрабатывают данные в runtime.
Макросы - это, грубо говоря, поиск+замена в тексте программы. Не более того.

Пиши функцию.
hoggy
6368 / 2586 / 451
Регистрация: 15.11.2014
Сообщений: 5,714
Завершенные тесты: 1
10.07.2015, 23:26     Сцепить строку в макросе #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от _Valera_ Посмотреть сообщение
Нужно получить имена test1 ...test4, но выходит testi.
никак.

если бы вам прсто нужно было просто запилить кучку переменных в исходном тексте программы,
тогда можно было бы сделать например так:


http://rextester.com/UUICMR10918

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#define dFORDIMMY void()
 
#define dFOR(beg, end, macro) \
    dFOR_##beg##_##end(macro) \
    dFORDIMMY
 
// ---------------------------------------------
// ---------------------------------------------
// ---------------------------------------------
 
#define dFOR_0_0(macro) macro(0)
#define dFOR_0_1(macro) dFOR_0_0(macro) macro(1)
#define dFOR_0_2(macro) dFOR_0_1(macro) macro(2)
#define dFOR_0_3(macro) dFOR_0_2(macro) macro(3)
#define dFOR_0_4(macro) dFOR_0_3(macro) macro(4)
#define dFOR_0_5(macro) dFOR_0_4(macro) macro(5)
#define dFOR_0_6(macro) dFOR_0_5(macro) macro(6)
#define dFOR_0_7(macro) dFOR_0_6(macro) macro(7)
#define dFOR_0_8(macro) dFOR_0_7(macro) macro(8)
#define dFOR_0_9(macro) dFOR_0_8(macro) macro(9)
 
#define dFOR_1_1(macro) macro(1)
#define dFOR_1_2(macro) dFOR_1_1(macro) macro(2)
#define dFOR_1_3(macro) dFOR_1_2(macro) macro(3)
#define dFOR_1_4(macro) dFOR_1_3(macro) macro(4)
#define dFOR_1_5(macro) dFOR_1_4(macro) macro(5)
#define dFOR_1_6(macro) dFOR_1_5(macro) macro(6)
#define dFOR_1_7(macro) dFOR_1_6(macro) macro(7)
#define dFOR_1_8(macro) dFOR_1_7(macro) macro(8)
#define dFOR_1_9(macro) dFOR_1_8(macro) macro(9)
 
#define dFOR_2_2(macro) macro(2)
#define dFOR_2_3(macro) dFOR_2_2(macro) macro(3)
#define dFOR_2_4(macro) dFOR_2_3(macro) macro(4)
#define dFOR_2_5(macro) dFOR_2_4(macro) macro(5)
#define dFOR_2_6(macro) dFOR_2_5(macro) macro(6)
#define dFOR_2_7(macro) dFOR_2_6(macro) macro(7)
#define dFOR_2_8(macro) dFOR_2_7(macro) macro(8)
#define dFOR_2_9(macro) dFOR_2_8(macro) macro(9)
 
#define dFOR_3_3(macro) macro(3)
#define dFOR_3_4(macro) dFOR_3_3(macro) macro(4)
#define dFOR_3_5(macro) dFOR_3_4(macro) macro(5)
#define dFOR_3_6(macro) dFOR_3_5(macro) macro(6)
#define dFOR_3_7(macro) dFOR_3_6(macro) macro(7)
#define dFOR_3_8(macro) dFOR_3_7(macro) macro(8)
#define dFOR_3_9(macro) dFOR_3_8(macro) macro(9)
 
#define dFOR_4_4(macro) macro(4)
#define dFOR_4_5(macro) dFOR_4_4(macro) macro(5)
#define dFOR_4_6(macro) dFOR_4_5(macro) macro(6)
#define dFOR_4_7(macro) dFOR_4_6(macro) macro(7)
#define dFOR_4_8(macro) dFOR_4_7(macro) macro(8)
#define dFOR_4_9(macro) dFOR_4_8(macro) macro(9)
 
#define dFOR_5_5(macro) macro(5)
#define dFOR_5_6(macro) dFOR_5_5(macro) macro(6)
#define dFOR_5_7(macro) dFOR_5_6(macro) macro(7)
#define dFOR_5_8(macro) dFOR_5_7(macro) macro(8)
#define dFOR_5_9(macro) dFOR_5_8(macro) macro(9)
 
#define dFOR_6_6(macro) macro(6)
#define dFOR_6_7(macro) dFOR_6_6(macro) macro(7)
#define dFOR_6_8(macro) dFOR_6_7(macro) macro(8)
#define dFOR_6_9(macro) dFOR_6_8(macro) macro(9)
 
#define dFOR_7_7(macro) macro(7)
#define dFOR_7_8(macro) dFOR_7_7(macro) macro(8)
#define dFOR_7_9(macro) dFOR_7_8(macro) macro(9)
 
#define dFOR_8_8(macro) macro(8)
#define dFOR_8_9(macro) dFOR_8_8(macro) macro(9)
 
#define dFOR_9_9(macro) macro(9)
 
 
 
#include <iostream>
 
int main()
{
    std::cout << "Hello, world!\n";
    
    
    //--- цикл на препроцессоре
    #undef iteration
    #define iteration(n) \
        int var_##n = n;
  
    dFOR(5, 7, iteration);
    std::cout<<"--------------\n";
    
    std::cout << "var_5 = " << var_5 <<'\n';
    std::cout << "var_6 = " << var_6 <<'\n';
    std::cout << "var_7 = " << var_7 <<'\n';
}
Yandex
Объявления
10.07.2015, 23:26     Сцепить строку в макросе
Ответ Создать тему
Опции темы

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