C не справляется с инструкциями.В C99 вы можете скопировать любой размер struct
, используя одно присваивание:
struct huge { int data[1 << 20]; };
struct huge a, b;
a = b;
С помощью умного компилятора это должно генерировать самый быстрый (однопоточный, хотя в будущем, надеюсь, многопоточный) кодчтобы выполнить копирование.
Вы можете использовать тип int_fast8_t
, если вам нужен «самый быстрый» целочисленный тип, определенный поставщиком.Скорее всего, это будет соответствовать размеру слова, но это точно не гарантирует даже возможность записи одной инструкцией.
Я думаю, что лучшим вариантом будет использование по умолчанию одного типа (например, int
) и использованиеПрепроцессор C для оптимизации для определенных процессоров.