1. Мегаконкурс в апреле "Приведи друзей на codeby". Дарим деньги, подписку на журнал хакер и выдаем статус "Paid Access". Подробнее ...

    Скрыть объявление

Ошибка компилятора Gcc. Требуется помощь.

Тема в разделе "Общие вопросы по С и С++", создана пользователем alx, 23 июн 2010.

Наш партнер Genesis Hackspace
  1. alx

    alx Гость

    собственно скачал драйвера для некого железа. не могу собрать.
    есть файл.h
    там такой фрагмент кода:
    <!--shcode--><pre><code class='с'>#define AE531X_DESC_SWPTR_GET(ptr) \
    (void *)(*(volatile UINT32 *) ((UINT32)ptr + AE531X_DESC_SWPTR))

    #define AE531X_DESC_SWPTR_SET(ptr,val) \
    AE531X_DESC_SWPTR_GET(ptr) = (void *)(val)[/CODE]
    и в самой программке
    ...........
    <!--shcode--><pre><code class='с'>AE531X_DESC_SWPTR_SET(txDesc, TxBuf);[/CODE]
    вызывает ошибку компилятора error: lvalue required as left operand of assignment...
    понимаю, что после преобразований define код получится страшным, но знаний не хватает...
     
  2. korisk

    korisk Гость

    Получается что-то типа
    (void *)(*(volatile UINT32 *) ((UINT32)txDesc + AE531X_DESC_SWPTR)) = (void *)(TxBuf)

    чтобы посмотреть во что превращается код можно использовать опцию -E (gcc -E main.c), которая выдает код после разворачивания макросов.

    Проблема скорее всего в типе txDesc. Покажите описание переменных.

    С уважением.
     
  3. alx

    alx Гость

  4. korisk

    korisk Гость

    Интересно для чего проект?
    Экзотическая ось такая ) eCos.
    А по сути..
    Возможно стоит более свежую версию скачать :).

    Ещё вариант убрать в макросе:
    <!--shcode--><pre><code class='С'>#define AE531X_DESC_SWPTR_GET(ptr)[/CODE]

    преобразование (void *), так чтобы получилось
    <!--shcode--><pre><code class='С'>#define AE531X_DESC_SWPTR_GET(ptr) \
    (*(volatile UINT32 *) ((UINT32)ptr + AE531X_DESC_SWPTR))[/CODE]

    Преобразование типа левой части операции присваивания запрещено в современных версиях gcc. (в 4.4) точно.
    Так что либо используйте старый gcc, либо ищите новый драйвер, либо правьте согласно рецепту, но там наверное ещё много чего вылезет )
    тыц

    Удач. :)
     
Загрузка...
Похожие Темы - Ошибка компилятора Gcc
  1. Петручо
    Ответов:
    8
    Просмотров:
    124
  2. Rahmatov
    Ответов:
    0
    Просмотров:
    110
  3. M.Planck
    Ответов:
    5
    Просмотров:
    156
  4. Kotik222
    Ответов:
    4
    Просмотров:
    202
  5. Denybxx
    Ответов:
    5
    Просмотров:
    203

Поделиться этой страницей