|
вопросы по IAR, В поисках идеального компилятора |
|
|
|
Oct 27 2005, 08:58
|
Местный
  
Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064

|
Перехожу на С, в связи с этим пересмотрел ICC CV и наконец добрался до IAR Для начала пересмотрел все что уже было сказано, много пока туманно надо будет осмысливать. Первый вопрос, хотя я вроде как с ответом утвердился, это возможно ли в IAR представить число в виде 0bxxxxxxxx. Лазая по настройкам пришел к выводу что нет такой возможности, да и в ANSI C это не предусмотрено. Или я чего-то не знаю ? Второй: вот в этой ветке http://forum.electronix.ru/index.php?showtopic=8829встретил описание макроса как Код #define _DDR_(a) DDR##a #define _DDR(a) _DDR##_(a) #define SETDDR(x) (_DDR(x##p)|=BIT(x##b)) //PORT A ********************************** #define OUT0p A #define OUT0b 4 SETDDR(OUT0); макрос который ставит 4 бит в DDRA В инклудах описаны только представления PORTA, DDRA, PINA, остальные как-то формируются ?? но как так и не понял.  В help на IAR по поводу ## нашел вот это: Rule 98 (required) There shall be at most one occurrence of the # or ## preprocessor operator in a single macro definition. How the rule is checked The compiler will generate an error, indicating a violation of this rule, if more than one of # or ## is used in combination. For example, the occurrence of # and ## in the same macro definition will trigger an error. Example of rule violations #define FOO(x) BAR(#x) ## _var Examples of correct code #define FOO(x) #x #define FOO(x) my_ ## x И опять ничего не понял  что за ## что он делает ? В книгах по С ничего такого не нашел... Кстати этот макрос работает на IAR и ICC, CV ругается. Может кто обьяснить что это за ## и как они работают ....
|
|
|
|
|
 |
Ответов
|
Oct 27 2005, 09:30
|

Участник

Группа: Новичок
Сообщений: 48
Регистрация: 6-05-05
Пользователь №: 4 784

|
## в макросе с параметром обозначает, что далее следует параметр макроса в символьном виде без разрывов, например: Код #define Stop(CHN) bCh##CHN##Up = 0; bCh##CHN = 0; Stop(13); // для препроцессора это "bCh13Up = 0; bCh13 = 0;"
--------------------
|
|
|
|
|
Oct 27 2005, 10:16
|
Местный
  
Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064

|
Цитата(G}{OST @ Oct 27 2005, 12:30) ## в макросе с параметром обозначает, что далее следует параметр макроса в символьном виде без разрывов, например: Код #define Stop(CHN) bCh##CHN##Up = 0; bCh##CHN = 0; Stop(13); // для препроцессора это "bCh13Up = 0; bCh13 = 0;" То есть, если я правильно понял: ## (начало вставки) - параметр - ## (конец вставки) если до вставки ничего нет то можно не писать ## в начале и соответственно если после вставки ничего нет то можно ## не ставить Код #define SETDDR(x) (_DDR(x##p)|=BIT(x##b))
SETDDR(OUT0); будет выполняться так _DDR(OUTp)|=BIT(OUTb) а поскольку у нас #define OUT0p A #define OUT0b 4 то: _DDR(A)|=BIT(4) за счет #define _DDR(a) _DDR##_(a) будет подставлено: _DDR##_(A)|=BIT(4) и в итоге #define _DDR_(a) DDR##a преобразует все к виду: DDRA|=BIT(4) Вот только с последними двумя #define _DDR_(a) DDR##a #define _DDR(a) _DDR##_(a) не совсем понятно а именно Зачем #define _DDR(a) _DDR##_(a) почему не #define _DDR(a) DDR##a ???
|
|
|
|
|
Oct 27 2005, 10:35
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(&-rey @ Oct 27 2005, 13:16) То есть, если я правильно понял: ## (начало вставки) - параметр - ## (конец вставки) если до вставки ничего нет то можно не писать ## в начале и соответственно если после вставки ничего нет то можно ## не ставить Нет, ## - это "двуместный оператор", он склеивает свои левый и правый аргументы (как "+" их складывает). Цитата(&-rey) А по поводу bin формата я прав, или что-то где-то недопонял? А что с bin-форматом? Я что-то не нашёл вопрос.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
Сообщений в этой теме
&-rey вопросы по IAR Oct 27 2005, 08:58 halfdoom Цитата(&-rey @ Oct 27 2005, 11:58)Ex... Oct 27 2005, 09:34 &-rey Цитата(halfdoom @ Oct 27 2005, 12:34)Цитата(... Oct 27 2005, 10:18 ReAl Цитата(&-rey @ Oct 27 2005, 11:58)Мо... Oct 27 2005, 09:48 &-rey Цитата(ReAl @ Oct 27 2005, 12:48)Цитата(... Oct 27 2005, 10:20 ReAl Ещё для переваривания :-)
Для неокрепших желудков ... Oct 27 2005, 10:43 &-rey Цитата(ReAl @ Oct 27 2005, 13:43)Ещё для пере... Oct 27 2005, 12:04  ReAl Цитата(&-rey @ Oct 27 2005, 15:04)Уж... Oct 28 2005, 05:33   spf Цитата(ReAl @ Oct 28 2005, 10:33)3) поискать ... Oct 28 2005, 06:12    ReAl Цитата(spf @ Oct 28 2005, 09:12)Цитата(ReAl ... Oct 28 2005, 12:11 grave Вот держите заголовочник.
Иногда даже удобней по... Oct 28 2005, 13:35 &-rey Всем Спасибо за ответы, но проблема bin формата дл... Nov 1 2005, 06:28 Old1
Существует, смотри здесь, в самом конце...
ЗЫ
(н... Nov 1 2005, 09:56 &-rey И все равно никак
Перейдем на конкретный пример
и... Nov 1 2005, 11:56 G}{OST Цитата(&-rey @ Nov 1 2005, 15:56)Err... Nov 1 2005, 12:02  &-rey Цитата(G}{OST @ Nov 1 2005, 15:02)Цитата(... Nov 1 2005, 12:19   G}{OST так в хидере пропиши как extern и включи хидер в т... Nov 1 2005, 12:32    &-rey Цитата(G}{OST @ Nov 1 2005, 15:32)так в хидер... Nov 1 2005, 12:42     G}{OST Цитата(&-rey @ Nov 1 2005, 16:42)Цит... Nov 1 2005, 12:48      &-rey Цитата(G}{OST @ Nov 1 2005, 15:48)Цитата(... Nov 1 2005, 13:13       G}{OST Цитата(&-rey @ Nov 1 2005, 17:13)Лад... Nov 1 2005, 13:38        &-rey Цитата(G}{OST @ Nov 1 2005, 16:38)Цитата(... Nov 1 2005, 13:46         G}{OST Цитата(&-rey @ Nov 1 2005, 17:46)А о... Nov 1 2005, 13:56         TMX Вообще лучше делать так:
Код/*
Module name: gl... Nov 1 2005, 13:59 Old1 Цитата(&-rey @ Nov 1 2005, 14:56)И в... Nov 1 2005, 17:55 sergeeff Ну а не проще ли в файле global.c (и только в нем)... Nov 1 2005, 16:10 TMX Цитата(sergeeff @ Nov 1 2005, 19:10)Ну а не п... Nov 1 2005, 16:58 &-rey 2 TMX
Цитатакомпилятор вообще-то компилирует кажды... Nov 2 2005, 12:01 G}{OST Цитата(&-rey @ Nov 2 2005, 16:01)В С... Nov 2 2005, 12:23  &-rey Цитата(G}{OST @ Nov 2 2005, 15:23)Цитата(... Nov 2 2005, 13:06   G}{OST Цитата(&-rey @ Nov 2 2005, 17:06)Спа... Nov 2 2005, 13:14 Vic1 Цитата(&-rey @ Nov 2 2005, 16:01)Вот... Nov 2 2005, 12:35  &-rey Цитата(Vic1 @ Nov 2 2005, 15:35)Цитата(&... Nov 2 2005, 13:16 Old1 Цитата(&-rey @ Nov 2 2005, 15:01)В С... Nov 2 2005, 18:25  Old1 Цитата(Old1 @ Nov 2 2005, 21:25)Цитата(&... Nov 3 2005, 16:19   AVR У меня IAR EW AVR 4.11A евалуэйшн версия.
В списке... Nov 3 2005, 22:24    IgorKossak Цитата(AVR @ Nov 4 2005, 01:24)У меня IAR EW ... Nov 4 2005, 07:37     m16 Цитата(IgorKossak @ Nov 4 2005, 11:37)В настр... Nov 4 2005, 08:08      IgorKossak Цитата(m16 @ Nov 4 2005, 11:08)Прошерстил сай... Nov 4 2005, 08:15     AVR Цитата(IgorKossak @ Nov 4 2005, 11:37)Цитата(... Nov 4 2005, 14:38      m16 Цитата(AVR @ Nov 4 2005, 18:38)Спасибо за под... Nov 4 2005, 14:49       AVR Цитата(m16 @ Nov 4 2005, 18:49) я тоже по... Nov 11 2005, 22:14        IgorKossak Цитата(AVR @ Nov 12 2005, 00:14) У меня з... Nov 15 2005, 08:18 Vic1 2 &-rey
ЦитатаДа я читал про работу swich но у... Nov 2 2005, 13:23 Vic1 2 &-rey, далее..
Цитатая думаю можно анализиро... Nov 2 2005, 13:36 &-rey да Вы правы, только сначала лучьше написать, а пот... Nov 2 2005, 14:03 forever failure Ага: а под версию 3.20D есть такая заплатка ?
а то... Nov 16 2005, 13:55 IgorKossak Цитата(forever failure @ Nov 16 2005, 15... Nov 16 2005, 16:46 forever failure че не так ?
// main.cpp:
#include <complex... Nov 16 2005, 18:27 Old1 Цитата(forever failure @ Nov 16 2005, 21... Nov 16 2005, 18:48  forever failure Цитата(Old1 @ Nov 16 2005, 23:48) В чем п... Nov 16 2005, 18:56   vet Цитата(forever failure @ Nov 16 2005, 21... Nov 17 2005, 07:02   Old1 Цитата(forever failure @ Nov 16 2005, 21... Nov 17 2005, 07:33 forever failure Проблема ещё раз :
#include <complex>
int ... Nov 17 2005, 14:46 Old1 Цитатапри компиляции получаю сообщения о 25 ошибка... Nov 17 2005, 21:01  forever failure с 64 bit double помогло. Однако Большой Бубен, одн... Nov 18 2005, 14:10   dxp Цитата(forever failure @ Nov 18 2005, 20... Nov 18 2005, 14:40 vet forever failure
IAR 4.10B. Создал С++ проект, вста... Nov 18 2005, 12:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|