Как избавиться от "dereferencing ... will break strict-aliasing rules" варнингов в библиотеке UIPEthernet?

Умничать будем?
Атрибут как раз и говорит компилятору не использовать связанную оптимизацию с этой структурой.

Вот так еще можно:

struct MyStruct *ptr = (volatile struct MyStruct *)(buffer + offset);

“волатиль” тоже "обрежет крылья " оптимизатору. Но может драматически замедлить вообще всё, что связано с этой структурой.

КОроче вопрос в том, как оно работает с этими ворнингами. Если и так нормально - пробуй эти варианты.

есть подозрение, что либа была написана под 8битные ардуины. А там, очевидно, на выравнивание пофиг, поэтому все работало.

Обязательно напиши, чем кончилось!!! У меня нет похожих вещей сейчас, но тема очень важная. Скользящее окно по буферу - очень важный и частый прием работы.

Ну либо скинь код, над которым я могу сам поиздеваться.
Но ДУЕ у меня нет. Да и плат с Езернетом тоже. Валяется 5500 для тестов купленная и всё.

Ну да, я это давно понял.
Наша задача сейчас - отключить в этой части все оптимизации под 32 бита.
Попробуй вариант с атрибутом или с волатилем.

Да я сам это копаю чисто теоретически :slight_smile: Дальше компиляции дело не идет. Попросили, по возможности, помочь разобраться и убрать причину варнингов.

А код я беру прямо из библиотеки. Ссылка на либу

Берешь первый пример - AdvancedChatServer.ino и компилишь под разные платы

reinterpret_cast<>() пробовал?

пока нет…
Парни, я сейчас с работы домой поехал, так что извиняйте если не буду быстро отвечать

Хотя… если мое предположение о том, что предупреждение связано с выравниванием - правильное, то чем мне может помочь

reinterpret_cast<>()

С оригинальной библиотекой и на восьмибитных платформах ворнингами засыпало. Но работало и не пукало. При условии правил жизни с ENC82J60 ))

Нет, не считаю.

Но, как правило, если архитектура такая вот особенная, то при не выровненном обращении произойдет эксепшн и вы это увидите.

Например, на моем любимом ЕСП32 вылетает исключение. На ЕСП32, в зависимости от выделенного блока памяти, может требоваться, а может и не требоваться. Более того, если память с 32битовым доступом, то ее тупо нельзя читать и писать побайтно вне зависимости от того, выровненный адрес или нет.

Это предупреждение НЕ О ВЫРАВНИВАНИИ. Это предупреждение о том, что поинтер на данную память оптимизатор не имеет права теперь считать памятью под структуру.

Посмотри про алиасинг в ГЦЦ.

Это не про выравнивание.

Ну, хозяин - барин. Развлекайтесь :slight_smile:

Вы второй человек, который мне это говорит. И я даже не спорю.

Только никто не может обьяснить, что это значит -

поинтер на данную память оптимизатор не имеет права теперь считать памятью под структуру.

И, по-моему, это вовсе не противоречит моей идее про выравнивание.
Может именно потому оптимизатор и “не имеет права”, потому что из-за выравнивания структура может оказаться совсем не там?

Еще раз - я не спорю.
Однако полагаю, что любым правилам должно быть логичное обьяснение. И мое обьяснение про выравнивание - на мой взгляд очень даже логичное. Например оно отлично обьясняет, почему любую структуру разрешено приводить к типу “указатель на char”, а наоборот - нельзя.

тогда пропробуй

#pragma pack(push, 1)

Пожалуйста, не употребляйтесь новорегам – “любых примеров” не бывает в природе. Только что попробовал компилировать пример EchoServer – для двух платформ (ESP32S3 и Uno). Вывод компиляции выглядит вот так:

Для ESP32S3
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master/utility/mempool_conf.h:5,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master/utility/mempool.h:28,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master/utility/Enc28J60Network.h:28,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master/UIPEthernet.h:35,
                 from D:\GoogleD\Soft\Kaka\kaka3\kaka3.ino:37:
d:\GoogleD\Soft\libraries\UIPEthernet-master/utility/uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master/UIPClient.h:37,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master/UIPEthernet.h:41,
                 from D:\GoogleD\Soft\Kaka\kaka3\kaka3.ino:37:
d:\GoogleD\Soft\libraries\UIPEthernet-master/utility/logging.h:24:2: warning: #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage." [-Wcpp]
 #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage."
  ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\Dhcp.cpp:6:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\Dhcp.cpp:17:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/logging.h:24:2: warning: #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage." [-Wcpp]
 #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage."
  ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/mempool_conf.h:5,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/mempool.h:28,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/Enc28J60Network.h:28,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPEthernet.h:35,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPUdp.cpp:20:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPClient.h:37,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPEthernet.h:41,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPUdp.cpp:20:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/logging.h:24:2: warning: #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage." [-Wcpp]
 #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage."
  ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\Dns.cpp:5:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\Dns.cpp:24:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/logging.h:24:2: warning: #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage." [-Wcpp]
 #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage."
  ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/mempool_conf.h:5,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/mempool.h:28,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/Enc28J60Network.h:28,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPEthernet.h:35,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPEthernet.cpp:27:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPClient.h:37,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPEthernet.h:41,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPEthernet.cpp:27:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/logging.h:24:2: warning: #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage." [-Wcpp]
 #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage."
  ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPClient.cpp:19:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/logging.h:24:2: warning: #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage." [-Wcpp]
 #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage."
  ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPClient.cpp:23:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPClient.cpp: In static member function 'static uint16_t UIPClient::_write(uip_userdata_t*, const uint8_t*, size_t)':
d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPClient.cpp:262:1: error: label 'ready' defined but not used [-Werror=unused-label]
 ready:
 ^~~~~
cc1plus.exe: some warnings being treated as errors
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/mempool_conf.h:5,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/mempool.h:28,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/Enc28J60Network.h:28,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPEthernet.h:35,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPServer.cpp:19:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPClient.h:37,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPEthernet.h:41,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPServer.cpp:19:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/logging.h:24:2: warning: #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage." [-Wcpp]
 #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage."
  ^~~~~~~

exit status 1

Compilation error: exit status 1

а вот

Для Uno
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master/utility/mempool_conf.h:5:0,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master/utility/mempool.h:28,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master/utility/Enc28J60Network.h:28,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master/UIPEthernet.h:35,
                 from D:\GoogleD\Soft\Kaka\kaka3\kaka3.ino:37:
d:\GoogleD\Soft\libraries\UIPEthernet-master/utility/uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master/UIPClient.h:37:0,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master/UIPEthernet.h:41,
                 from D:\GoogleD\Soft\Kaka\kaka3\kaka3.ino:37:
d:\GoogleD\Soft\libraries\UIPEthernet-master/utility/logging.h:24:2: warning: #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage." [-Wcpp]
 #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage."
  ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\Dns.cpp:5:0:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\Dns.cpp:24:0:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/logging.h:24:2: warning: #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage." [-Wcpp]
 #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage."
  ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/mempool_conf.h:5:0,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/mempool.h:28,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/Enc28J60Network.h:28,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPEthernet.h:35,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPUdp.cpp:20:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPClient.h:37:0,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPEthernet.h:41,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPUdp.cpp:20:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/logging.h:24:2: warning: #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage." [-Wcpp]
 #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage."
  ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\Dhcp.cpp:6:0:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\Dhcp.cpp:17:0:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/logging.h:24:2: warning: #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage." [-Wcpp]
 #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage."
  ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPClient.cpp:19:0:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/logging.h:24:2: warning: #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage." [-Wcpp]
 #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage."
  ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPClient.cpp:23:0:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPClient.cpp: In static member function 'static uint16_t UIPClient::_write(uip_userdata_t*, const uint8_t*, size_t)':
d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPClient.cpp:262:1: warning: label 'ready' defined but not used [-Wunused-label]
 ready:
 ^~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/mempool_conf.h:5:0,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/mempool.h:28,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/Enc28J60Network.h:28,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPEthernet.h:35,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPEthernet.cpp:27:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPClient.h:37:0,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPEthernet.h:41,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPEthernet.cpp:27:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/logging.h:24:2: warning: #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage." [-Wcpp]
 #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage."
  ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/mempool_conf.h:5:0,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/mempool.h:28,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/Enc28J60Network.h:28,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPEthernet.h:35,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPServer.cpp:19:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
In file included from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPClient.h:37:0,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPEthernet.h:41,
                 from d:\GoogleD\Soft\libraries\UIPEthernet-master\UIPServer.cpp:19:
d:\GoogleD\Soft\libraries\UIPEthernet-master\utility/logging.h:24:2: warning: #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage." [-Wcpp]
 #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage."
  ^~~~~~~
In file included from D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\uip.h:56:0,
                 from D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\uip_arp.h:62,
                 from D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\uip_arp.c:61:
D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
In file included from D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\uip.h:56:0,
                 from D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\uip.c:82:
D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\uip.c: In function 'uip_process':
D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\uip.c:857:39: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if((BUF->len[0] << 8) + BUF->len[1] <= uip_len) {
                                       ^~
In file included from D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\mempool_conf.h:5:0,
                 from D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\mempool.h:28,
                 from D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\mempool.cpp:20:
D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
In file included from D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\mempool.cpp:22:0:
D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\logging.h:24:2: warning: #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage." [-Wcpp]
 #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage."
  ^~~~~~~
In file included from D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\mempool_conf.h:5:0,
                 from D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\mempool.h:28,
                 from D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\Enc28J60Network.h:28,
                 from D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\Enc28J60Network.cpp:25:
D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\uipopt.h:97:4: warning: #warning "Endianness configured automaticaly." [-Wcpp]
   #warning "Endianness configured automaticaly."
    ^~~~~~~
In file included from D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\Enc28J60Network.cpp:34:0:
D:\GoogleD\Soft\libraries\UIPEthernet-master\utility\logging.h:24:2: warning: #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage." [-Wcpp]
 #warning "You can configure LogObject and ACTLOGLEVEL in 'utility/logging.h'. More verbosity more memory usage."
  ^~~~~~~
Скетч использует 17118 байт (53%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 1050 байт (51%) динамической памяти, оставляя 998 байт для локальных переменных. Максимум: 2048 байт.

Как видите, ничего похожего на Ваши предупреждения нет.

Мне все примеры перебирать?

Да, там не про выравнивание. strict aliasing – это, по большей части, про другое – про неопределённое поведение если, вдруг, в памяти окажется нечто, непредставимое в данном типе.

Можно глупый вопрос: зачем в 2025-м году использовать старинный сетевой чип без буферной памяти, который рассчитывался, наверное, под модемный траффик типа 19200 ?

Ведь весь гемор и тогда и сейчас - это результат симуляции памяти чипа в памяти контроллера. Причём - мелкого восьмибитного. Отсюда и все эти фокусы с struct looking glass.

Евгений, все указано предельно конкретно в сообщении #25. Почему не в первом - потому что первый раз, когда меня спросили за код, был @WladDrakula в сообщении 23.

Пример - AdvancedChatServer.ino, платы Дуе и Мега

Можно конечно.
Один мой друг потратил много времени, встроив эту либу в свой проект. Он попросил меня помочь убрать эти предупреждения.

Спасибо за ссылку, хотя она, как по мне, немного не о том.
А вот вторая часть этой же статьи (к сожалению, на Хабре ее нет или я не нашел) - как раз таки 100% про мою проблему - про type-punning
И там есть и про выравнивание. И хоть связь выравнивания и нарушения правил алиасинга не такая простая и прямая, как я предполагал, все-таки общую идею, как мне кажется, я ухватил верно.

О, я тоже провел много времени с этим микрочипом. Однако, с удовольствием перелез на Wiznet.