|
вопросы по 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, 10:43
|

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

|
Ещё для переваривания :-) Для неокрепших желудков - осторожно, понемногу :-) Вопрос вкусовой, но я не люблю писать лишнее, поэтому не стесняюсь писать так: Цитата(dlportio_driver.h) #ifndef DLPORTIO_DRIVER_H #define DLPORTIO_DRIVER_H
typedef WINAPI void (*DlPortWritePortUchar_t) (unsigned port, uint8_t data); typedef WINAPI uint8_t(*DlPortReadPortUchar_t) (unsigned p); typedef WINAPI void (*DlPortWritePortBufferUchar_t) (unsigned p, uint8_t * buf, int len); typedef WINAPI void (*DlPortReadPortBufferUchar_t) (unsigned p, uint8_t * buf, int len); typedef WINAPI void (*DlPortWritePortUshort_t) (unsigned p, uint16_t data); typedef WINAPI uint16_t(*DlPortReadPortUshort_t) (unsigned p); typedef WINAPI void (*DlPortWritePortBufferUshort_t) (unsigned p, uint16_t * buf, int len); typedef WINAPI void (*DlPortReadPortBufferUshort_t) (unsigned p, uint16_t * buf, int len);
class dlportio_driver : public port_io_driver { public: static dlportio_driver *create();
/* ЛИШНЕЕ ПОСКИПАНО */
protected: HINSTANCE hdlportio;
#define _DL_PTR(_f_) _f_##_t _f_##_P
_DL_PTR( DlPortWritePortUchar ); _DL_PTR( DlPortReadPortUchar ); _DL_PTR( DlPortWritePortBufferUchar ); _DL_PTR( DlPortReadPortBufferUchar ); _DL_PTR( DlPortWritePortUshort ); _DL_PTR( DlPortReadPortUshort ); _DL_PTR( DlPortWritePortBufferUshort ); _DL_PTR( DlPortReadPortBufferUshort );
#undef _DL_PTR
}; и в соответствующем исходнике Цитата(dlportio_driver.cpp) dlportio_driver *dlportio_driver::create() { #define _DL_LOAD(_f_) \ do {\ pdl->_f_##_P = (_f_##_t)GetProcAddress(pdl->hdlportio, #_f_);\ if(pdl->_f_##_P == NULL) {\ delete pdl;\ return NULL;\ }\ } while(0)
dlportio_driver *pdl = new dlportio_driver;
pdl->hdlportio = LoadLibrary("DLportIO.dll"); if (pdl->hdlportio == NULL) { delete pdl; // "Can't load port library\n" return NULL; }
_DL_LOAD( DlPortWritePortUchar ); _DL_LOAD( DlPortReadPortUchar ); _DL_LOAD( DlPortWritePortBufferUchar ); _DL_LOAD( DlPortReadPortBufferUchar ); _DL_LOAD( DlPortWritePortUshort ); _DL_LOAD( DlPortReadPortUshort ); _DL_LOAD( DlPortWritePortBufferUshort ); _DL_LOAD( DlPortReadPortBufferUshort );
return pdl;
#undef _DL_LOAD }
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Oct 27 2005, 12:04
|
Местный
  
Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064

|
Цитата(ReAl @ Oct 27 2005, 13:43) Ещё для переваривания :-) Для неокрепших желудков - осторожно, понемногу :-) Вопрос вкусовой, но я не люблю писать лишнее, поэтому не стесняюсь писать так: Цитата(dlportio_driver.h) #ifndef DLPORTIO_DRIVER_H #define DLPORTIO_DRIVER_H
typedef WINAPI void (*DlPortWritePortUchar_t) (unsigned port, uint8_t data); typedef WINAPI uint8_t(*DlPortReadPortUchar_t) (unsigned p); typedef WINAPI void (*DlPortWritePortBufferUchar_t) (unsigned p, uint8_t * buf, int len); typedef WINAPI void (*DlPortReadPortBufferUchar_t) (unsigned p, uint8_t * buf, int len); typedef WINAPI void (*DlPortWritePortUshort_t) (unsigned p, uint16_t data); typedef WINAPI uint16_t(*DlPortReadPortUshort_t) (unsigned p); typedef WINAPI void (*DlPortWritePortBufferUshort_t) (unsigned p, uint16_t * buf, int len); typedef WINAPI void (*DlPortReadPortBufferUshort_t) (unsigned p, uint16_t * buf, int len);
class dlportio_driver : public port_io_driver { public: static dlportio_driver *create();
/* ЛИШНЕЕ ПОСКИПАНО */
protected: HINSTANCE hdlportio;
#define _DL_PTR(_f_) _f_##_t _f_##_P
_DL_PTR( DlPortWritePortUchar ); _DL_PTR( DlPortReadPortUchar ); _DL_PTR( DlPortWritePortBufferUchar ); _DL_PTR( DlPortReadPortBufferUchar ); _DL_PTR( DlPortWritePortUshort ); _DL_PTR( DlPortReadPortUshort ); _DL_PTR( DlPortWritePortBufferUshort ); _DL_PTR( DlPortReadPortBufferUshort );
#undef _DL_PTR
}; и в соответствующем исходнике Цитата(dlportio_driver.cpp) dlportio_driver *dlportio_driver::create() { #define _DL_LOAD(_f_) \ do {\ pdl->_f_##_P = (_f_##_t)GetProcAddress(pdl->hdlportio, #_f_);\ if(pdl->_f_##_P == NULL) {\ delete pdl;\ return NULL;\ }\ } while(0)
dlportio_driver *pdl = new dlportio_driver;
pdl->hdlportio = LoadLibrary("DLportIO.dll"); if (pdl->hdlportio == NULL) { delete pdl; // "Can't load port library\n" return NULL; }
_DL_LOAD( DlPortWritePortUchar ); _DL_LOAD( DlPortReadPortUchar ); _DL_LOAD( DlPortWritePortBufferUchar ); _DL_LOAD( DlPortReadPortBufferUchar ); _DL_LOAD( DlPortWritePortUshort ); _DL_LOAD( DlPortReadPortUshort ); _DL_LOAD( DlPortWritePortBufferUshort ); _DL_LOAD( DlPortReadPortBufferUshort );
return pdl;
#undef _DL_LOAD } Ужас.... но буду принимать понемногу  По поводу bin я не нашел в IAR возможность записывать константы типа: 0b11111011 В ANSI C такого и нет, вроде, вот я и решил что IAR этот вариант представлени не поддерживает. Т. е. писать константы в hex 0xFB, или в DEC 251 соответственно. Или может там есть возможность как-то иначе но в поиск по Help ничего не дал. ???
|
|
|
|
Сообщений в этой теме
&-rey вопросы по IAR Oct 27 2005, 08:58 G}{OST ## в макросе с параметром обозначает, что далее сл... Oct 27 2005, 09:30 &-rey Цитата(G}{OST @ Oct 27 2005, 12:30)## в макро... Oct 27 2005, 10:16  ReAl Цитата(&-rey @ Oct 27 2005, 13:16)То... Oct 27 2005, 10:35 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 Цитата(&-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
|
|
|