Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[CrossStudio 2.1][C] wyrównywanie danych

Pawel2420 01 Sie 2011 15:24 683 2
  • #1 01 Sie 2011 15:24
    Pawel2420
    Poziom 30  

    Witam !

    Używam CrossSttudio for ARM 2.1 i mam pewien problem. Chyba to dość typowa sprawa ale nie znalazłem działającego rozwiązania. Chodzi o wyrównywanie danych.
    Poniżej przykładowy program. Po jego wykonaniu w zmienna a=0x0a09 a powinna mieć wartość 0x0807.
    W różnych przykładach, które znalazłem jest użyte __attribute__ ((packed)) lub #pragma pack(1). Jednak u mnie to nie działa tzn. zawsze uzyskuję a=0x0a09. Czy trzeba coś jeszcze ustawić we właściwościach projektu ?

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 2
  • #2 01 Sie 2011 15:33
    michalko12
    Specjalista - Mikrokontrolery

    Spróbuj

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #3 01 Sie 2011 15:39
    Pawel2420
    Poziom 30  

    Teraz przyszło mi do głowy, że trzeba dopisać __attribute__ ((packed)) również przy tej pierwszej definicji:

    struct addr{
    char addr[6];
    } __attribute__ ((packed));

    i zadziałało !!!

    0