Нет стандартной библиотечной функции afaik. Поэтому, если вы пишете переносимый код, вы смотрите на цикл.
Если вы пишете непереносимый код, проверьте документацию по вашему компилятору / платформе, но не задерживайте дыхание, потому что здесь редко можно получить большую помощь. Может быть, кто-то еще добавит примеры платформ, которые что-то предоставляют.
Способ, которым вы будете писать свой собственный, зависит от того, можете ли вы определить в API, что вызывающая сторона гарантирует, что указатель dst будет достаточно выровнен для 64-битной записи на вашей платформе (или платформах, если они переносимы). На любой платформе с 64-битным целочисленным типом, по крайней мере, malloc будет возвращать соответствующим образом выровненные указатели.
Если вам нужно справиться с неприсоединением, то вам нужен что-то вроде ответа лунной тени. Компилятор может встроить / развернуть этот memcpy с размером 8 (и использовать 32- или 64-битные операции выравнивания без выравнивания, если они существуют), поэтому код должен быть довольно ловким, но я предполагаю, что он, вероятно, не будет особенным случаем вся функция для пункта назначения выравнивается. Я бы хотел, чтобы меня исправили, но боюсь, что не буду.
Так что, если вы знаете, что вызывающая сторона всегда выдаст вам dst с достаточным выравниванием для вашей архитектуры и длиной, кратной 8 байтам, тогда выполните простой цикл, записывающий uint64_t (или любой другой 64-битный int в вашем компиляторе) и вы, вероятно, (без обещаний) получите более быстрый код. У вас наверняка будет более короткий код.
В любом случае, если вам небезразлична производительность, профилируйте ее. Если это не достаточно быстро, попробуйте еще раз с большей оптимизацией. Если это все еще не достаточно быстро, задайте вопрос о версии asm для процессоров, на которых это не достаточно быстро. memcpy / memset может значительно увеличить производительность за счет оптимизации для каждой платформы.