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

 
 
> генерация дефайнов, макросы препроцессора
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
Ответов
vmp
сообщение Jul 7 2008, 07:04
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 20-01-05
Из: Зеленоград
Пользователь №: 2 070



Можно чуть-чуть сократить количество писанины путем применения enum:
typedef enum {
X1 = 1201, X2, X3, X4, ..., XN} T_XX;

Дальше для генерации можно взять препроцессор, оператор ##:
#define GEN10(str) str##0, str##1, str##2 и т.д до str##9
тогда вызов GEN10(X5) сделает перечисление X50, X51, X52, ... X59
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 12:21
Рейтинг@Mail.ru


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