реклама на сайте
подробности

 
 
> генерация дефайнов, макросы препроцессора
SpiritDance
сообщение Jul 7 2008, 05:44
Сообщение #1


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



А как бы так извернутся с препроцессором?

Требуется код примерно такого вида:
Код
/* знгачения идут по порядку от базового целого */
#define X1 1200
#define X2 1201
#define X3 1203
.....
#define XN 12..

/* A1 и A2 идут в начаеле и они разных значений */
const t_mytype X_struct_array =
{
   A1, 0, {0},
   A2, 0, {0},
   X1, 0, {0},
   X2, 0, {0},
   .....
   XN, 0, {0}
}

где N зависит от модели устройства

Вопрос в том как сделать, чтобы не набивать X1 X2.. Xn а просто задать количество N и код сгенерился бы препроцессором?
постоянно сталкиваюсь с такой проблемой, а решения так и не нашел. Хочется уже один раз разобратся и не терять больше времени на возню.
Извиняюсь если не в тот раздел, больше не нашел куда приткнуть.


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Rst7
сообщение Jul 7 2008, 07:20
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Если не пугает небольшая кривость, то можно сделать так
Код
typedef struct
{
  int val;
}t_mytype;

#define XNEXT (__LINE__+1200)
const t_mytype X_struct_array[] = {
#include "x.h"
};


и файл x.h

Код
  {XNEXT},
  {XNEXT},
  {XNEXT},
  {XNEXT},
  {XNEXT},
  {XNEXT},
  {XNEXT},
  {XNEXT},
  {XNEXT},


Естественно, на x.h накладываются ограничения: одна строка - один элемент, пропусков быть не должно.

Результат после препроцессора таков:
Код
typedef struct
{
  int val;
}t_mytype;

const t_mytype X_struct_array[] = {
  {(1+1200)},
  {(2+1200)},
  {(3+1200)},
  {(4+1200)},
  {(5+1200)},
  {(6+1200)},
  {(7+1200)},
  {(8+1200)},
  {(9+1200)},
};


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 05:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01359 секунд с 7
ELECTRONIX ©2004-2016