0 1 2 3 4 ...9 10 11 12 13 ...18 19 20 21 22
Всичко си работи точно както го очакваш. Сеща се, че са точно по един регистър и си ползва регистрите. Т.е. няма run time penalty но пък има много предимства по време на програмиране - първо не ти позволява да смесиш приравнявания на променливи с различен endianness, второ навсякъде в кода е очевадно, че еди коя си променлива е с еди какъв си endianness.
Те ти малко код да видиш за какво иде реч:
little_big_endian.h
#pragma once
#include <stdint.h>
typedef struct __attribute__((scalar_storage_order("little-endian"))) little_endian_int64_t { int64_t little_endian; } little_endian_int64_t;
typedef struct __attribute__((scalar_storage_order("little-endian"))) little_endian_int32_t { int32_t little_endian; } little_endian_int32_t;
typedef struct __attribute__((scalar_storage_order("little-endian"))) little_endian_int16_t { int16_t little_endian; } little_endian_int16_t;
typedef struct __attribute__((scalar_storage_order("little-endian"))) little_endian_uint64_t { uint32_t little_endian; } little_endian_uint64_t;
typedef struct __attribute__((scalar_storage_order("little-endian"))) little_endian_uint32_t { uint32_t little_endian; } little_endian_uint32_t;
typedef struct __attribute__((scalar_storage_order("little-endian"))) little_endian_uint16_t { uint16_t little_endian; } little_endian_uint16_t;
typedef struct __attribute__((scalar_storage_order("big-endian"))) big_endian_int64_t { int32_t big_endian; } big_endian_int64_t;
typedef struct __attribute__((scalar_storage_order("big-endian"))) big_endian_int32_t { int32_t big_endian; } big_endian_int32_t;
typedef struct __attribute__((scalar_storage_order("big-endian"))) big_endian_int16_t { int16_t big_endian; } big_endian_int16_t;
typedef struct __attribute__((scalar_storage_order("big-endian"))) big_endian_uint64_t { uint32_t big_endian; } big_endian_uint64_t;
typedef struct __attribute__((scalar_storage_order("big-endian"))) big_endian_uint32_t { uint32_t big_endian; } big_endian_uint32_t;
typedef struct __attribute__((scalar_storage_order("big-endian"))) big_endian_uint16_t { uint16_t big_endian; } big_endian_uint16_t;
Предполагам, че нямаш нужда от пример как се ползва. Autocomplete на VIM & VSCode се справят чудесно.
Изглежда доста добре, ще го имам предвид ако ми се налага да правя нещо подобно.
А козоеба ако пусне кода на проекта си, сглобен от краден код, ще му обясним кой ред какво прави та да не се чуди като го питат ганите.
Реба Създадено на 20.02.25 04:20, видяно: 106 пъти. #135780
интересно как си се набутал в ситуация с голям индиянец в паметта. големия индианец само моторолата го обича май, но никога не съм позволявал такива данни да ми влязат неконвертирани
Ще обясниш как го турят на макя ти чергарска. С МОДЕРЕН фронтенд ще гледаш като мишка в брашно.
Аз щом съм си къстомизирал проекта за мене - имам някаква идея. Махам някои неща - дописвам други.
Тизе не мож го пусна дори на localhost, бих заложил всичко, което имам, ако ти изтрия readme и нямаш нет.
Съществуващ комуникационен протокол. Правя фирмуер за нов сензор за дебит на вода в тръбопроводи. И преди беше с едно викане на htonl или там както бяха тези функции за въртене на байтове. И ако забравиш да ги викнеш и всичко се сговняса. А така няма начин.
Винаги ме е кефил минимализма в програмирането, но си иска време човек да изчиства кода. И повечето хора с които работя все бързат и с времето излишно усложняват прости неща докато сложността не надхвърли капацитета на екипа.
0 1 2 3 4 ...9 10 11 12 13 ...18 19 20 21 22