Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
492 / 374 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
1

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

10.07.2015, 22:45. Просмотров 382. Ответов 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.
Как быть?


Спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2015, 22:45
Ответы с готовыми решениями:

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

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

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

Найти все строки, имеющие четную длину, сцепить их в одну строку и вставить в начало списка
Здравствуйте, я начинающий в C#. Не подскажите: //условие? Вот мой вариант: 2.Использовать...

2
13475 / 7138 / 1712
Регистрация: 30.01.2014
Сообщений: 11,943
10.07.2015, 22:58 2
Цитата Сообщение от _Valera_ Посмотреть сообщение
Как быть?
Никак, макросы не обрабатывают данные в runtime.
Макросы - это, грубо говоря, поиск+замена в тексте программы. Не более того.

Пиши функцию.
1
Эксперт С++
8178 / 3775 / 815
Регистрация: 15.11.2014
Сообщений: 8,586
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';
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.07.2015, 23:26

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Переход на следующую строку в макросе
Здравствуйте! Как в макросе организовать переход на следующую строку?

Как удалить строку в Excele, в макросе?
Как удалить строку в Excele, в макросе?

Как прописать в макросе, чтобы результат добавлялся в следующую (после данных) пустую строку?
Добрый день. На одном листе данные, которые сначала фильтруются одним способом и результат...

Сцепить формулу
Уважаемые форумчане.Помоите разобраться в одном вопросе. Необходимо собрать из отдельных ячеек...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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