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

 
 
> Макросы в IAR EWAVR, v5.40.1
ivainc1789
сообщение Feb 8 2010, 06:54
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



В девайсах ATtiny иногда приходится сильно экономить память программ и использовать макросы. Поначалу все получалось и вдруг наступил затык. Три раза проект компилировался нормально, а с четвертого вдруг началась ругань на один из макросов. Причем его строки однотипны, а ругается только с четвертой. Подскажите в чем причина? Использую IAR EWAVR.
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Feb 9 2010, 17:26
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



На последнем скриншоте из сообщения #13 в макросах нужно убрать завершающий символ "точка с запятой". Потому что этот символ присутствует в тексте программы после "вызова" макросов.
Код
  Simple1(1);
  Simple2(2);
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Feb 9 2010, 19:09
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Цитата(rezident @ Feb 9 2010, 20:26) *
На последнем скриншоте из сообщения #13 в макросах нужно убрать завершающий символ "точка с запятой". Потому что этот символ присутствует в тексте программы после "вызова" макросов.
Код
  Simple1(1);
   Simple2(2);
Верно. Я специально это проверил и с оператором ";" и без. Компилер вроде не ругается и в листинге норма. Или есть какая-то неявная опасность?
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 9 2010, 20:50
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(ivainc1789 @ Feb 10 2010, 00:09) *
Или есть какая-то неявная опасность?

Точка с запятой является концом оператора. Если она попадет в выражение, то выражение или описание может превратиться в оператор там, где это вовсе не предполагалось.
Пример конечно надуманный, но попробуйте представить, что будет в случае наличия лишнего символа ";" при макроподстановке в цикле for
Код
for (cntr=0; MACRO; cntr++)
{
...
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ivainc1789   Макросы в IAR EWAVR   Feb 8 2010, 06:54
- - Палыч   Цитата(ivainc1789 @ Feb 8 2010, 09:54) По...   Feb 8 2010, 07:05
- - SasaVitebsk   Цитата(ivainc1789 @ Feb 8 2010, 10:54) В ...   Feb 8 2010, 08:19
- - ivainc1789   ЦитатаНепонятно, как именно вообще макросы могут с...   Feb 8 2010, 20:03
|- - Dog Pawlowa   Цитата(ivainc1789 @ Feb 8 2010, 23:03) А ...   Feb 8 2010, 20:26
|- - ivainc1789   Цитата(Dog Pawlowa @ Feb 8 2010, 23:26) 1...   Feb 8 2010, 21:21
|- - Dog Pawlowa   Цитата(ivainc1789 @ Feb 9 2010, 01:21) То...   Feb 9 2010, 09:33
- - _Pasha   Пример, заменяющий первую половину использованной ...   Feb 8 2010, 21:21
|- - ivainc1789   Цитата(_Pasha @ Feb 9 2010, 00:21) Пример...   Feb 8 2010, 21:44
|- - _Pasha   Цитата(ivainc1789 @ Feb 9 2010, 00:44) Но...   Feb 8 2010, 22:14
||- - ivainc1789   Цитата(_Pasha @ Feb 9 2010, 01:14) Потому...   Feb 9 2010, 15:23
||- - AHTOXA   Цитата(ivainc1789 @ Feb 9 2010, 20:23) Из...   Feb 9 2010, 15:38
|||- - ivainc1789   Цитата(AHTOXA @ Feb 9 2010, 18:38) Уберит...   Feb 9 2010, 16:32
||- - Dog Pawlowa   Цитата(ivainc1789 @ Feb 9 2010, 19:23) вы...   Feb 9 2010, 20:54
|- - SasaVitebsk   Цитата(ivainc1789 @ Feb 9 2010, 01:44) То...   Feb 9 2010, 01:54
- - SasaVitebsk   +1. Не считаю себя профессионалом в данном вопросе...   Feb 9 2010, 10:27


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

 


RSS Текстовая версия Сейчас: 1st August 2025 - 17:35
Рейтинг@Mail.ru


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