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

 
 
> Макро определения глобальных переменных в нескольких файлах, в Keil не работает со структурой
ViKo
сообщение Nov 10 2010, 10:25
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Имею макро, как описано на сайте Keil (только без подчеркиваний)
Код
#ifndef  VAR_DECLS
  #define  DECL extern
  #define  INIT(x)
#else
  #define  DECL
  #define  INIT(x) = x
#endif

В одном из файлов (Main.c), задаю VAR_DECLS, там эти переменные определяются и инициализируются. В остальных - только объявляются. Классика.
Имею тип структуры, и пытаюсь ее определить
Код
typedef struct {  
  int WorkAreaWide : 1;  // Work Area Wide
  int WorkScaleForm : 2; // Work Scale Form
  int dummy  : 6;
  } LCDMode_t  __attribute__((bitband));
DECL LCDMode_t LCDMode INIT({1, 3, 0});

На последнюю строку компилятор ругается
error: #55: too many arguments in macro invocation
Как? Как сделать, чтоб работало? У меня - никакие фокусы не проходят.

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MrYuran
сообщение Nov 10 2010, 12:17
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Короче, в одном месте у вас запятые распознаются как разделители параметров макроса, и их, естественно получается многовато.
В другом - не хочет есть фигурные скобки внутри круглых.

Надо как-то так:

#define LCD_MODE_INIT_VALUES {1,2,3}
DECL LCDMode_t LCDMode INIT(LCD_MODE_INIT_VALUES);

Но не уверен, что прокатит


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 17:15
Рейтинг@Mail.ru


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