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

Сложный макрос - C++

Восстановить пароль Регистрация
 
Pinokio
2 / 2 / 0
Регистрация: 14.09.2012
Сообщений: 83
01.04.2013, 09:43     Сложный макрос #1
В книге была задача, написать макрос, определяющий массив типа Type, который называется Name, имеет Number элементов, и все элементы содержат значение Value
Я написал следующее:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
using namespace std;
 
#define def_ar(type,name,number,value) \
    typedef #type #name[number] = value;    
 
int main(int argc, char* argv[])
{
    const char* name = "M";
    const char* type = "int";
    int number = 5;
    int value = 0;
    def_ar(type,name,number,value);
    return 0;
}
Компилятор пишет "expected unqualified-id before string constant"(компилю в mingw g++)
Мне кажется я макрос криво определил. Помогите подправить его
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2013, 09:43     Сложный макрос
Посмотрите здесь:

Не сложный вопросик!!! C++
Цикл сложный C++
C++ одновимерни массивы и сложный поиск
одномерные массивы и сложный поиск C++
Если макрос на VBA переписать на С++, то макрос станет работать быстрее? C++
C++ Сложный макрос
посоветуйте - сложный ли код C++
Сложный калькулятор C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
01.04.2013, 09:50     Сложный макрос #2
C++
1
2
3
4
5
6
#define ARRAY(type, name, size, value) \
   type name[size]; \
   for (int i = 0; i < size; ++i) \
   { \
     name[i] = value; \
   }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
#define ARRAY(type, name, size, value) \
   type name[size]; \
   for (int i = 0; i < size; ++i) \
   { \
     name[i] = value; \
   }
 
int main()
{
   ARRAY(int, array, 10, 5);
   for (int i = 0; i < 10; ++i)
   {
      std::cout << array[i] << std::endl;
   }
}
http://liveworkspace.org/code/1Nc0uW$0
Yandex
Объявления
01.04.2013, 09:50     Сложный макрос
Ответ Создать тему
Опции темы

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