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

 
 
> вопросы по IAR, В поисках идеального компилятора
andrvisht
сообщение Oct 27 2005, 08:58
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 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, остальные как-то формируются ?? но как так и не понял. sad.gif
В 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

И опять ничего не понял sad.gif
что за ## что он делает ? В книгах по С ничего такого не нашел...
Кстати этот макрос работает на IAR и ICC, CV ругается.

Может кто обьяснить что это за ## и как они работают ....
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ReAl
сообщение Oct 27 2005, 10:43
Сообщение #2


Нечётный пользователь.
******

Группа: Свой
Сообщений: 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
}


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
andrvisht
сообщение Oct 27 2005, 12:04
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 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
}

*




Ужас.... но буду принимать понемногу smile.gif
По поводу bin я не нашел в IAR возможность записывать константы типа:
0b11111011
В ANSI C такого и нет, вроде, вот я и решил что IAR этот вариант представлени не поддерживает. Т. е. писать константы в hex 0xFB, или в DEC 251 соответственно.
Или может там есть возможность как-то иначе но в поиск по Help ничего не дал.
???
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- &-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


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

 


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


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