Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: uCOS+EFSL в IAR 4
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
JeDay
Добрый день.
Собираю в Яре тестовый проектик с EFSL, компилится нормально.
Отдельный проект с uCOS - тоже проблем. А вот после того как скручиваю эти 2 програмных модуля в месте, компилер выдает варнинги на имена структур файловой системы.
На сколько я понял, в uCOS и EFSL есть типы данных с похожими названиями.
Если кто сталкивался с данной проблемой, подскажите плиз в чем трабла и как ее решить. help.gif
В приложении проект.
Вот фрагмент лога:

Код
Warning[w35]: There is more than one definition for the struct/union type with tag 'VolumeId'; class/struct/union types have different sizes
  struct VolumeId /* Elements: 10, Bytes: 28 */
  {  
    euint16 BytesPerSector;
    euint8 SectorsPerCluster;
    euint16 ReservedSectorCount;
    euint8 NumberOfFats;
    euint16 RootEntryCount;
    euint16 SectorCount16;
    euint16 FatSectorCount16;
    euint32 SectorCount32;
    euint32 FatSectorCount32;
    euint32 RootCluster;
  };
    typedef unsigned short euint16;
    typedef unsigned char euint8;
    typedef unsigned int euint32;
  struct VolumeId /* Elements: 10, Bytes: 24 */
  {  
    euint16 BytesPerSector;
    euint8 SectorsPerCluster;
    euint16 ReservedSectorCount;
    euint8 NumberOfFats;
    euint16 RootEntryCount;
    euint16 SectorCount16;
    euint16 FatSectorCount16;
    euint32 SectorCount32;
    euint32 FatSectorCount32;
    euint32 RootCluster;
  };
    typedef unsigned short euint16;
    typedef unsigned char euint8;
    typedef unsigned int euint32;
Warning[w35]: There is more than one definition for the struct/union type with tag 'FileSystem'; class/struct/union types have different sizes
  struct FileSystem /* Elements: 10, Bytes: 64 */
  {  
    Partition * part;
    VolumeId volumeId;
    euint32 DataClusterCount;
    euint32 FatSectorCount;
    euint32 SectorCount;
    euint32 FirstSectorRootDir;
    euint32 FirstClusterCurrentDir;
    euint32 FreeClusterCount;
    euint32 NextFreeCluster;
    euint8 type;
  };
    typedef struct Partition Partition;
    typedef struct VolumeId VolumeId;
    typedef unsigned int euint32;
    typedef unsigned char euint8;
  struct FileSystem /* Elements: 10, Bytes: 57 */
  {  
    Partition * part;
    VolumeId volumeId;
    euint32 DataClusterCount;
    euint32 FatSectorCount;
    euint32 SectorCount;
    euint32 FirstSectorRootDir;
    euint32 FirstClusterCurrentDir;
    euint32 FreeClusterCount;
    euint32 NextFreeCluster;
    euint8 type;
  };
    typedef struct Partition Partition;
    typedef struct VolumeId VolumeId;
    typedef unsigned int euint32;
    typedef unsigned char euint8;
...
...
...
meister
Цитата(JeDay @ Jan 31 2008, 11:17) *
Добрый день.
подскажите плиз в чем трабла


может быть, выравнивание.
zltigo
Проблема в том, что efsl писана небрежно. Лично мне хватило в свое время посмотреть на warnings которые вылезают при ее компиляции и на стиль написания, что-бы не продолжать разборки с ней. В Вашем конкретном случае, это полное отсутствие #pragma pack перед структурами относящимися к файловой системе и безусловно должными быть упакованными. При этом где-то в каком-то из *.h эта прагма болтается, что приводит к паковке только в некоторых случаяx.

Moderator:
А насчет кросспостов - настоятельная просьба освежить память перечитав Правила форума.
JeDay
Спасибо за ответ.
Именно это я и подозревал.

Цитата
Moderator:
А насчет кросспостов - настоятельная просьба освежить память перечитав Правила форума.

Сори, перечитаю..
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.