LINUX.ORG.RU

Компилятор анализирует исходник и сообщает, что packed для данного типа не имеет смысла. Это действие непосредственно не связано ни с опциями компиляции, ни с чем-либо еще.

Такой результат подходит?

anonymous
()
Ответ на: комментарий от anonymous

> Это действие непосредственно не связано ни с опциями компиляции, ни с чем-либо еще.

Прошу прощения - сказал глупость. Похоже, что проблема действительно имеет место.

anonymous
()

-Wno-packed и -Wpacked немного о другом,
>cat fooo.c
struct test
{
char args[1] __attribute__((packed));
} ;

struct test1 {
char a, b, c, d;
} __attribute__((packed));

int main()
{
return 0;
}

>gcc -Wall fooo.c
fooo.c:3: warning: ‘packed’ attribute ignored for field of type ‘char[0u]’
>gcc -Wall -Wpacked fooo.c
fooo.c:3: warning: ‘packed’ attribute ignored for field of type ‘char[0u]’
fooo.c:8: warning: packed attribute is unnecessary for ‘test1’

такой код просто не имеет смысла, и к тому помещается ли
в единицу выравнивания данные или нет (-Wno-packed) отношения не имеет:

struct test
{
char args[1] __attribute__((packed));
} ;


надо писать так:

struct test
{
char args[1];
} __attribute__((packed));

fghj ★★★★★
()
Ответ на: комментарий от fghj

Вопрос тот же - как убрать именно этот warning в таком коде?

Я не говорю про правильность, корректность и т п
Ясно же, что код искусственный.

Krivenok_Dmitry
() автор топика
Ответ на: комментарий от Krivenok_Dmitry

>Вопрос тот же - как убрать именно этот warning в таком коде?

-Wno-attributes, но лучше починить код, потому что если действительно надо было делать packed, то атрибут поставили не туда,
и если код зависит от того, чтобы структура была сжата, то все будет падать,

или цель, чтобы никто никогда не нашел ошибки,
и пользоваться уязвимостью?

fghj ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.