warning: dereferencing pointer 't' does break strict-aliasing rules
От: Vasya777 Россия  
Дата: 09.03.13 06:12
Оценка:
Здравствуйте, уважаемые специалисты!

Данное предупреждение может привести к неверному присвоению? Что нужно сделать, чтобы его не было?


typedef struct
{
    union
    {
        unsigned char data[8];
        struct
        {
            struct
            {
                unsigned long a1: 1;
                unsigned long a2: 31;
            };
            unsigned long a3;
        };
    };
} test_t;
 
typedef struct
{
    union
    {
        unsigned long b1[2];
        unsigned char b2[8];
    };
} test2_t;
 
void f_test()
{
    test2_t t2 = {{{0, 0}}};
    test_t* t = (void*)&t2;
    t->a1 = 1;
    t->a2 = 1;
    t->a3 = 1;
}


Предупреждения:

main.c:68: warning: dereferencing pointer 't' does break strict-aliasing rules
main.c:67: warning: dereferencing pointer 't' does break strict-aliasing rules
main.c:66: warning: dereferencing pointer 't' does break strict-aliasing rules
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.